为何用父类get方法和子类get方法获取的age值是不一样的?!

来源:9-7 Java 中的 super 的使用

慕移动2126195

2020-07-27 12:48

你好!

我有疑惑如图

Animal父类

http://img.mukewang.com/5f1e5af40001814a05790397.jpg


main

http://img.mukewang.com/5f1e5af400010a0805800323.jpg

Dog子类

http://img3.mukewang.com/5f1e5af40001293905880318.jpg

结果如下

http://img1.mukewang.com/5f1e5af40001f2d704310169.jpg


我的疑惑是 main中代码是丛上到下一行一行执行的 那么在用子类的changeAge方法修改了age的值为20以后 内存中age的值已经变成了20 为何用父类get方法获取的age的值还是初始的1 而不是修改后的值 而子类的get方法就是修改后的值?谢谢


写回答 关注

2回答

  • qq_慕慕9183427
    2020-07-28 18:47:54
    已采纳

    我觉得应该是super只是父类的替身一样的东西可以显示父类属性等,但不能直接这样改,它们俩是不同的,你可以

    Animal a=new Dog()这样去属性覆盖,这样是可以改变父类属性值的

  • 慕婉清7537194
    2020-07-28 18:20:40

    一个是A对象,一个是B对象,子类的changeAge是在对象B中调用的,age不是静态变量,A对象不受影响,应该是这样

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530560 学习 · 6091 问题

查看课程

相似问题