2 回答
TA贡献1831条经验 获得超9个赞
您可以使用super而不是调用重写的方法this。
class Example extends Parent {
@Override
void method() {
super.method(); // calls the overridden method
}
}
如果你想强制每个子类调用父类的方法,Java 并没有为此提供直接的机制。但是您可以使用调用抽象函数的最终函数来允许类似的行为(模板方法)。
abstract class Parent {
final void template() { // the template method
System.out.println("My name is " + this.nameHook());
}
protected abstract String nameHook(); // the template "parameter"
}
class Child {
@Override
protected String nameHook() {
return "Child"
}
}
然后你可以通过调用模板方法来运行程序,该方法仅由父类定义,并且它会调用子类的钩子方法,子类都必须实现这些方法。
TA贡献1807条经验 获得超9个赞
如果你有类似的东西:
abstract class Room{
abstract void render(Canvas c){
//impl goes here
}
}
然后在你的子类中你可以这样做:
class SpecificRoom extends Room{
void render(Canvas c){
super.render(c);//calls the code in Room.render
}
}
添加回答
举报