Board logo

标题: JAVA入门123第十一章问题请教 [打印本页]

作者: mira    时间: 2016-5-3 08:29     标题: JAVA入门123第十一章问题请教

JAVA入门123第十一章问题请教,11.3.8中提到覆盖,子类调用方法时难道不是应该先从自己的方法里面找吗?为什么没覆盖就是用的父类的方法,而不是优先用子类自己的方法?这一点没搞明白,请大虾赐教,谢谢
作者: fwbook    时间: 2016-5-3 09:41

假设父类有方法A。而子类没有覆盖方法A。那子类调用的方法A的时候,因为子类没有重新定义方法A,就只能用父类的方法A了。
作者: mira    时间: 2016-5-3 16:17

回复 2# fwbook


    但P318页中子类有和父类有一样的方法privateMethed(),为什么最后调用的还是父类的privateMethed()方法?
作者: fwbook    时间: 2016-5-4 09:39

回复 3# mira


    test方法在定义的时候,调用的就是父类的privateMethod。而子类没有覆盖该方法,所以这个时候调用的还是父类的方法。如果test调用的是子类方法,那程序员在写test代码的时候,根本不知道子类的方法是怎么实现的,从而存在代码执行的不确定性了。
作者: mira    时间: 2016-5-5 09:02

回复 4# fwbook

还是不太明白,test()是子类对象调用方法,照理说应该是调用子类里的方法呀?
作者: fwbook    时间: 2016-5-5 10:51

回复 5# mira


    问题是test方法是在父类中定义的。子类是继承过去的。在哪里定义,就应该遵循哪里的规则。否则,一个方法在没有被覆盖的情况下,在不同子类执行,有不同的效果。那调用就存在不确定性了。这不符合编程的原则了。
作者: mira    时间: 2016-5-5 15:19

回复 6# fwbook

我忽略了test()方法是在父类里定义的,现在想明白了,谢谢




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0