标题:
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