黑马程序员技术交流社区
标题:
关于多态的问题
[打印本页]
作者:
完美恋爱
时间:
2013-10-14 14:28
标题:
关于多态的问题
本帖最后由 完美恋爱 于 2013-10-14 18:27 编辑
请问多态前提是存在着继承或者实现关系,有方法的重写,父类引用指向子类对象,那为什么不能调用父类里特有的方法呢?内存分配是什么样的呢?
作者:
hoyouly
时间:
2013-10-14 14:42
说实话,你问的两个问题我都没有搞明白。。
父类特有的方法,对于子类来说,父类还有特有方法吗?是吧,可能你会说父类的私有方法,但是私有方法对外是隐藏的,外界能调用吗?
至于内存分配这块,我是真心没有搞明白,我觉得先阶段咱们的水平对于理解内存分配这块还是太牵强,
但是看到你的提问,我忽然想到了这样一个反问:如果父类是抽象方法,你怎么调用啊???
很明显调用不了的,但是如果还想用这个方法,就只好通过子类去实现它咯,这样父类就可以调用了,
这就好比父亲有一个伟大的梦想,想发明一个东西,但是他只有这个想法,却没有实现,他能使用这项发明吗?可是后来子承父业,他儿子完成了这个发明,这样他不就可以使用这个功能了。是吧。
希望对你所帮助
作者:
郑齐育
时间:
2013-10-14 15:06
既然是父类引用指向子类对象,所以说在内存中存在的实际对象是子类,或者像视频里说的那样多态至始至终都是子类做着变化,当调用方法时,jvm会先检测内存中的实际对象,发现虽然对象引用是父类,但是实际对象是子类,所以会调用子类中的方法,你可以类比视频中的解释。当用毕姥爷的对象引用调用毕老师对象的讲课方法时,讲出来的课是java而不会是毕姥爷熟悉的内容。如果你理解了上面的相信你对内存分配也会清晰点的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2