首页 新闻 会员 周边

关于继承中父类引用子类对象的问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-04-29 11:26

3、父类变量引用子类对象

    father f1 = new son()

    父类有(ABC方法),子类有(CDF方法),f1接收子类对象,子类中的D、F方法被屏蔽,f1拥有A、B、(子类中的)C方法

 

请问这属于多态的问题吗?一直很不明白这种引用。

Cat Liang的主页 Cat Liang | 初学一级 | 园豆:197
提问于:2013-04-27 22:01
< >
分享
最佳答案
1

属于,这种方式就是属于多态,但这不是一个问题。如果你想调用d,f方法的话,江f1强制转换就行了。

son s1=(son)f1;这样你的s1就代替了f1可以调用d,f方法。其实你可以这样想,儿子穿上父亲伪装之后自能用父亲的方法,不然会露馅。当要当回自己的时候要卸下伪装。就是类型转换。

收获园豆:5
涛菜鸟 | 初学一级 |园豆:199 | 2013-04-28 11:03

这个问题我知道了!这种继承的父类类型的变量接收子类实例对象属于动态的多态,你也很好解答了类型转换的关系。谢谢!!

Cat Liang | 园豆:197 (初学一级) | 2013-04-29 11:25
其他回答(1)
0

java没研究,应该和.net 一样

1.这种引用 就是 类型转换,左右两边类型不一,隐式的转换,换成其它元数据类型就好理解了。

2.如果 父类方法为虚或者抽象方法,才可考虑多态。非虚方法 而子类又有重名方法,这是违反了里氏替换原则,不推荐的,而且 非虚和虚方法会导致子类的方法表不一样,内存分配上也是不一样的。

Qlin | 园豆:2403 (老鸟四级) | 2013-04-28 09:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册