黑马程序员技术交流社区
标题:
为什么多态成员变量都看父类,成员方法编译看父类运行...
[打印本页]
作者:
Silverge
时间:
2017-2-6 23:05
标题:
为什么多态成员变量都看父类,成员方法编译看父类运行...
多态的成员变量看父类,成员方法编译看父类,运行看子类。
里面的原理不太懂
作者:
Silverge
时间:
2017-2-7 23:34
没人吗。。。。。。。。。。。。
作者:
sigod
时间:
2017-2-7 23:40
重新开一遍视频吧。
作者:
dongdzhu
时间:
2017-2-9 00:13
Fu f = new Zi();----------首先了解变量F到底是什么,把这句子分2段:Fu f;这是声明一个变量f为Fu这个类,那么知道了f肯定是Fu类。然后我们f=newZi();中建立一个子类对象赋值给了f,结果是什么?? 结果是,拥有了被Zi类函数覆盖后的Fu类对象----f------。 -------------------------------------------也就是说: 只有子类的函数覆盖了父类的函数这一个变化,但是f肯定是Fu这个类,也就是说f不可能变成其他比如Zi这个类等等(突然f拥有了Zi类特有函数,成员变量等都是不可能的)。所以f所代表的是函数被复写后(多态的意义)的一个Fu类,而Fu类原来有的成员变量(不是成员函数不可能被复写)没有任何变化----------------获得结论:A:成员变量:编译和运行都看Fu。 但是f的Fu类函数被复写了。--------------获得结论:B:非静态方法:编译看Fu,运行看Zi 对于静态方法:编译和运行都看Fu!! 其实很简单,首先我们要理解静态情况下发生了什么? ----------------当静态时,Fu类的所有函数跟随Fu类加载而加载了。也就是Fu类的函数(是先于对象建立之前就存在了,无法被后出现的Zi类对象所复写的,所以没发生复写,那么获得:C:静态方法:编译和运行都看Fu
作者:
哈哈嘻嘻呵呵
时间:
2017-2-18 04:38
记住结论和会使用就好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2