Java笔试题学习之01

版权声明:欢迎转载,期待指正 https://blog.csdn.net/fighting_sxw/article/details/89185703
public class TestSub {
    private String a="父类的属性值";
    public TestSub() {
        call();
    }
    public void call(){
        System.out.println("父类的call方法被调用"+a);
    }
    static class TestSup extends TestSub{
        private String a ="子类的属性";

        public void call(){
            System.out.println(a);
        }
    }
    public static void main(String[] args) {
        TestSub ts=new TestSup();
    }
}

输出结果:null

TestSub ts=new TestSup(); 向上转型,父类引用指向子类对象

会先调用父类的构造器,再调用子类的构造器

创建子类对象时,先调用父类构造方法,在父类构造方法中,调用了call方法
call方法被子类重写了,所以不会调用父类的call方法,而是调用子类的call方法
子类的call方法中打印的是子类的属性a,但是此时还没有调用子类的构造器,所以子类对象还没被创造,所以子类的属性a还没有被赋值,
所以打印结果为null

ps:从大佬的抖音直接搬运过来,抖音号:Todaystart,不妥之处,还望指正!

猜你喜欢

转载自blog.csdn.net/fighting_sxw/article/details/89185703