A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

多态的成员变量看父类,成员方法编译看父类,运行看子类。
里面的原理不太懂

4 个回复

倒序浏览
没人吗。。。。。。。。。。。。
回复 使用道具 举报
重新开一遍视频吧。
回复 使用道具 举报
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
回复 使用道具 举报 1 0
记住结论和会使用就好
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马