为了账号安全,请及时绑定邮箱和手机立即绑定

关于多态属性的调用问题

关于多态属性的调用问题

一只斗牛犬 2019-04-19 14:15:17
class Fu{int num=4;void show(){System.out.println("showFu");}}class Zi extends Fu{int num = 5;void show(){System.out.println("showZi");}}public class Test1{public static void main(String[] args){Fu f=new Zi();Zi z=new Zi();    System.out.println(f.num);     *请问这个为什么打出来是4    System.out.println(z.num);    f.show();    z.show();}}
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

Fu f=new Zi();
因为f是Fu类型,所以看不到Z的成员。
如果是
System.out.println(((Z)f).num); 
则输出5

成员变量没有“覆盖”一说。


查看完整回答
反对 回复 2019-05-14
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

在java中,通常属性是没有多态这个概念的,不仅是成员变量,还有静态方法。

意思就是,如果你这个num,是通过静态方法来获取的话,那么依旧是父类的静态方法来为你提供返回值,而不是子类

除了成员变量和静态方法以外,普通的方法,就是执行子类的方法了,如果你不想要父类的成员变量,想要子类的,那么可以通过子类的get方法来获取,前提是你要写了get、set方法23333
通过f.getNum()来获取子类的成员变量的值

希望能够帮助你理解~


查看完整回答
反对 回复 2019-05-14
  • 2 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号