为什么向上转型后,最后两条应该怎么调用?为什么?谢谢
答案:1 悬赏:70
解决时间 2021-03-03 13:34
- 提问者网友:欺烟
- 2021-03-03 03:41
为什么向上转型后,最后两条应该怎么调用?为什么?谢谢
最佳答案
- 二级知识专家网友:酒醒三更
- 2021-03-03 04:13
此问题属于多态问题,需要主要下面两点:父类引用指向子类对象的时候,父类引用所能看到的只是属于父类的那部分属性和方法。
父类引用指向子类对象并且有方法重写的时候,父类方法的地址指向会发生变化(从指向自己类的方法变化为指向创建对象的类所对应的方法)
此程序内存图如下:
关键代码解析:
A a = new B();属于父类引用指向子类对象
a.print();变量a实实在在指向对象A(父类对象),所能看到的是父类的方法所对应的地址。由于存在方法重写,所以父类方法的地址指向创建对象的类(B类)所对应的方法,打印B对象属性:2
System.out.println(a.date);变量a实实在在指向对象A(父类对象),所能看到的是父类的属性:5。
父类引用指向子类对象并且有方法重写的时候,父类方法的地址指向会发生变化(从指向自己类的方法变化为指向创建对象的类所对应的方法)
此程序内存图如下:
关键代码解析:
A a = new B();属于父类引用指向子类对象
a.print();变量a实实在在指向对象A(父类对象),所能看到的是父类的方法所对应的地址。由于存在方法重写,所以父类方法的地址指向创建对象的类(B类)所对应的方法,打印B对象属性:2
System.out.println(a.date);变量a实实在在指向对象A(父类对象),所能看到的是父类的属性:5。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯