【发布时间】:2013-08-29 22:43:11
【问题描述】:
我想在 super 上递归调用一个方法,以便将调用的方法传播到最后一个超类。这个伪代码告诉我想做什么,但当然这不能用 Java 编译。
public MyClass {
protected void method() {
// do something on this level
if (super instanceof MyClass) {
MyClass superLevel = (MyClass) super;
superLevel.method();
}
}
}
如何实现这种行为?
【问题讨论】:
-
这段代码必须放在超类中。在超类中,你可以写
if (this instance of MyClass),但恕我直言,它暴露了一个设计缺陷:超类不应该知道它的子类。 -
唯一的选择是在每个级别上添加
super.method()呼叫。您只能使用super调用直接超类方法。
标签: java inheritance superclass super