返回列表 发帖

JAVA入门123第十一章问题请教

JAVA入门123第十一章问题请教,11.3.8中提到覆盖,子类调用方法时难道不是应该先从自己的方法里面找吗?为什么没覆盖就是用的父类的方法,而不是优先用子类自己的方法?这一点没搞明白,请大虾赐教,谢谢
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

假设父类有方法A。而子类没有覆盖方法A。那子类调用的方法A的时候,因为子类没有重新定义方法A,就只能用父类的方法A了。
在网上购买本书的读者,请给本书发一个好评。谢谢大家。

TOP

回复 2# fwbook


    但P318页中子类有和父类有一样的方法privateMethed(),为什么最后调用的还是父类的privateMethed()方法?

TOP

回复 3# mira


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

TOP

回复 4# fwbook

还是不太明白,test()是子类对象调用方法,照理说应该是调用子类里的方法呀?

TOP

回复 5# mira


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

TOP

回复 6# fwbook

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

TOP

返回列表