java覆写

时间:2020-06-18 16:34:42   收藏:0   阅读:73

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

 

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!