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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美恋爱 高级黑马   /  2013-10-14 14:28  /  1119 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 完美恋爱 于 2013-10-14 18:27 编辑

请问多态前提是存在着继承或者实现关系,有方法的重写,父类引用指向子类对象,那为什么不能调用父类里特有的方法呢?内存分配是什么样的呢?

评分

参与人数 1黑马币 +3 收起 理由
周志龙 + 3

查看全部评分

2 个回复

正序浏览
既然是父类引用指向子类对象,所以说在内存中存在的实际对象是子类,或者像视频里说的那样多态至始至终都是子类做着变化,当调用方法时,jvm会先检测内存中的实际对象,发现虽然对象引用是父类,但是实际对象是子类,所以会调用子类中的方法,你可以类比视频中的解释。当用毕姥爷的对象引用调用毕老师对象的讲课方法时,讲出来的课是java而不会是毕姥爷熟悉的内容。如果你理解了上面的相信你对内存分配也会清晰点的。
回复 使用道具 举报
说实话,你问的两个问题我都没有搞明白。。
父类特有的方法,对于子类来说,父类还有特有方法吗?是吧,可能你会说父类的私有方法,但是私有方法对外是隐藏的,外界能调用吗?
至于内存分配这块,我是真心没有搞明白,我觉得先阶段咱们的水平对于理解内存分配这块还是太牵强,

但是看到你的提问,我忽然想到了这样一个反问:如果父类是抽象方法,你怎么调用啊???
很明显调用不了的,但是如果还想用这个方法,就只好通过子类去实现它咯,这样父类就可以调用了,
这就好比父亲有一个伟大的梦想,想发明一个东西,但是他只有这个想法,却没有实现,他能使用这项发明吗?可是后来子承父业,他儿子完成了这个发明,这样他不就可以使用这个功能了。是吧。

希望对你所帮助

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马