关于super关键字访问父类属性值

父类:

public class Animal {

    int age=10;

    String name;

    public void eat(){

        System.out.println("动物吃饭");

    }

    public Animal(){

        System.out.println("动物类初始化");

    }

}


子类:

public class Dog extends Animal {

    public void print(){

    System.out.println(super.age);

    }

    public void printEat(){

        super.eat();

    }

    public void eat(){

        System.out.println("狗吃屎");

    }

}


测试类:

public class Initial {

    public static void main(String[] args) {

        Dog d=new Dog();

        d.age=50;

        d.print();

        d.eat();

        d.printEat();

    }

}

打印结果:

动物类初始化

50

动物吃饭

动物吃饭


问题:

print方法结果为啥是50呢?print方法是打印父类Anmial里面的age值的啊,不应该是10的么?如果要是注释掉测试类里面的d.age=50,就会打印10了。这是为什么呢?实在是不明白啊,哪位大佬解释一下呀???先谢谢谢谢啦!!!

阿布莱提阿布杜热西提
浏览 1789回答 1
1回答

幕附

你都给子类赋值了为啥还要去显示父类的呢,你可以打印一下super的hashCode和dog的hashCode就能看出来了,你再了解一下上下转型,至于别的话我就不知道了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java