假設三個類,一個是另一個的子類。每一個都會覆蓋父母的方法。覆蓋方法:如何「注入」超級方法?
public class BaseClass {
public void doStuff() {
performBaseTasks();
}
}
public class MiddleClass extends BaseClass {
// {BaseClass} Overrides
public void doStuff() {
performMiddleTasks();
super.doStuff();
}
}
public class FinalClass extends MiddleClass {
// {BaseClass} Overrides
public void doStuff() {
performFinalTasks();
super.doStuff();
}
}
當調用new FinalClass().doStuff()
,這將導致一個方法 invokation順序如下:
performFinalTasks();
performMiddleTasks();
performBaseTasks();
我希望把perfomFinalTasks()
之間performMiddleTasks()
和 performBaseTasks()
。我怎樣才能做到這一點?
performMiddleTasks();
performFinalTasks();
performBaseTasks();
這是一個詭計問題或來自實際用例的東西嗎?您可以訪問哪些課程,例如,您可以更改哪些課程? – Scorpion
@Scorpion:不,這不是一個詭計的問題。它來自一個實際的使用案例,其中中產階級正在建立一些數據,最終的課程需要與之合作。但是,基類方法的執行仍然必須最終執行。我可以改變任何這些類。 –
那麼,如果它是一個實際的用例,那麼最終的類應該如我的回答中所建議的那樣支持它,以及javadoc提到它的作用和它迎合的特殊用例。 – Scorpion