在父方法中重写方法调用

时间:2016-04-26 11:11:33

标签: java inheritance method-overriding

考虑以下因素:

parent: true
child: true

输出:

PRAGMA User_version

当在Child类中调用isMeh()时,它很明显,它调用重写的方法。

但是当在对象的方法中调用overriden方法时,它仍会调用子对象的方法。

我看到我们创建了一个子对象,而parentMethod只是继承的,因此当我们调用isMeh()时,它会调用可用的(被覆盖的)对象。

在java中实现此实现的原因是什么?

1 个答案:

答案 0 :(得分:1)

Parent的继承层次结构中的任何类,无论是ChildParent还是从它们派生的Grandchild,都只有一个方法实现叫isMeh。当Child使用自己的实现覆盖isMeh Parent时,它将取代实现;就Child而言,Parent中的实施不再适用 *

当您实例化Child并调用其parentMethod时,该方法只能访问一种方法isMeh - 即Child提供的实现。这就是为什么你得到你描述的行为。

此行为允许非常好的模式:例如,您可以依靠通过覆盖提供的子类中的“插件”功能,在父级中编写方法的“部分实现”。这种技术称为Template Method Design Pattern

* 虽然Child仍然能够明确调用Parent的{​​{1}}。