簡體   English   中英

在Java中,如果我從子類中調用一個超類方法,該超類方法將調用重寫方法,那么將調用哪個類的方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM