为什么向上转型后,最后两条应该怎么调用?为什么?谢谢

 我来答
尚学堂科技有限公司
2018-02-23 · 百度知道合伙人官方认证企业
尚学堂科技有限公司
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络在线教育、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建。
向TA提问
展开全部

此问题属于多态问题,需要主要下面两点:

  1. 父类引用指向子类对象的时候,父类引用所能看到的只是属于父类的那部分属性和方法。

  2. 父类引用指向子类对象并且有方法重写的时候,父类方法的地址指向会发生变化(从指向自己类的方法变化为指向创建对象的类所对应的方法)

此程序内存图如下:

关键代码解析:

A a = new B();

属于父类引用指向子类对象

a.print();

变量a实实在在指向对象A(父类对象),所能看到的是父类的方法所对应的地址。由于存在方法重写,所以父类方法的地址指向创建对象的类(B类)所对应的方法,打印B对象属性:2

System.out.println(a.date);

变量a实实在在指向对象A(父类对象),所能看到的是父类的属性:5。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式