[英]In java, if I call, from a subclass, a superclass method that calls an overriden method, which class' method will be called?
說我有這個超級班級:
public class MySuperClass {
protected void MyPrMethod() {
//Do...
}
public void MyPuMethod() {
MyPrMethod();
}
}
和這個子類:
public class MySubClass extends MeSuperClass {
public MySubClass() {}
@Override protected void MyPrMethod() {
//Do this instead...
}
}
然后進入主要:
MySubClass mySubClass = new MySubClass ();
mySubClass.MyPuMethod();
mySubClass.MyPuMethod()將調用哪個MyPrMethod?
編輯:我已經三次投票了。 由於我現在不在家,所以現在無法嘗試,盡管現在知道答案將有助於我設計自己正在編寫的程序中的零件。
因為方法MyPrMethod()
在子類中被覆蓋,所以將調用子類實現。
實際調用的方法取決於調用它的對象 。
將使用該方法的子類版本。 當MyPuMethod調用MyPrMethod時,將首先在類(MySubClass)中檢查所需的方法,並且只有在未定義該類的情況下,才會遞歸搜索其父級。 我們當前正在執行的方法是在另一個類中定義的事實並不會改變這一點。
來自子類MySubClass的MyPrMethod將被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.