首页 > 编程语言 > 详细

java覆写

时间:2020-06-18 16:34:42      阅读:71      评论:0      收藏:0      [点我收藏+]

1、覆写:子类定义了与父类中同名的方法,但是方法覆写时,必须考虑到权限,即子类覆写的方法不能拥有比父类方法更加严格的访问权限。

public>default>private

class A{
    public void fun(){
        System.out.println("A");
    }
}

class B extends A{
    public void fun(){
        System.out.println("B");
    }
}
public class ExtendsDemo1 {
    public static void main(String[] args) {
        B b = new B();
        b.fun();
    }
}

输出结果

B

2、覆写结果的分析要素:

  • 观察实例化的是哪个类
  • 观察这个实例化的类里面调用的方法是否已经覆写过,如果没有覆写则调用父类中的方法。
class A{
    public void fun(){
        print();
    }
    private void print(){   //子类不可见
        System.out.println("A");
    }
}

class B extends A{
    public void print(){
        System.out.println("B");
    }
}
public class ExtendsDemo1 {
    public static void main(String[] args) {
        B b = new B();
        b.fun();
        b.print();
    }
}

输出结果:

A
B

3、由子类调用父类中被子类覆写的方法,加上super.方法();

class A{
    public void fun(){
        print();
    }
    public void print(){
        System.out.println("A");
    }
}

class B extends A{
    public void print(){
        super.print();
        System.out.println("B");
    }
}
public class ExtendsDemo1 {
    public static void main(String[] args) {
        B b = new B();
        b.fun();
    }
}

运行结果:

A
B

4、

技术分享图片

 

 

 技术分享图片

 

 5、属性的覆盖

class A{
    int age =10;
    public void fun(){
        print();
    }
    public void print(){
        System.out.println("A");
    }
}

class B extends A{
    int age = 100;
    public void print(){
        super.print();
        System.out.println(this.age);
        System.out.println(super.age);
    }
}
public class ExtendsDemo1 {
    public static void main(String[] args) {
        B b = new B();
        b.fun();
    }
}

输出结果:

A
100
10

 

java覆写

原文:https://www.cnblogs.com/cathycheng/p/13158166.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!