为什么向上转型后,最后两条应该怎么调用?为什么?谢谢
1个回答
2018-02-23 · 百度知道合伙人官方认证企业
尚学堂科技有限公司
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络在线教育、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建。
向TA提问
关注
展开全部
此问题属于多态问题,需要主要下面两点:
父类引用指向子类对象的时候,父类引用所能看到的只是属于父类的那部分属性和方法。
父类引用指向子类对象并且有方法重写的时候,父类方法的地址指向会发生变化(从指向自己类的方法变化为指向创建对象的类所对应的方法)
此程序内存图如下:
关键代码解析:
A a = new B();
属于父类引用指向子类对象
a.print();
变量a实实在在指向对象A(父类对象),所能看到的是父类的方法所对应的地址。由于存在方法重写,所以父类方法的地址指向创建对象的类(B类)所对应的方法,打印B对象属性:2
System.out.println(a.date);
变量a实实在在指向对象A(父类对象),所能看到的是父类的属性:5。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询