2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用super而不是調(diào)用重寫的方法this。
class Example extends Parent {
@Override
void method() {
super.method(); // calls the overridden method
}
}
如果你想強(qiáng)制每個(gè)子類調(diào)用父類的方法,Java 并沒(méi)有為此提供直接的機(jī)制。但是您可以使用調(diào)用抽象函數(shù)的最終函數(shù)來(lái)允許類似的行為(模板方法)。
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"
}
}
然后你可以通過(guò)調(diào)用模板方法來(lái)運(yùn)行程序,該方法僅由父類定義,并且它會(huì)調(diào)用子類的鉤子方法,子類都必須實(shí)現(xiàn)這些方法。

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果你有類似的東西:
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
}
}
添加回答
舉報(bào)