0

このスーパークラスがあるとします:

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 を呼び出しますか?

編集:すでに3回反対票を投じられました。家にいないので今は試すことができませんが、今答えを知っていると、作成中のプログラムの一部を設計するのに役立ちます.

4

3 に答える 3

2

メソッドのサブクラスのバージョンが使用されます。MyPuMethod が MyPrMethod を呼び出すと、最初にクラス (MySubClass) で目的のメソッドがチェックされ、定義されていない場合にのみ親が再帰的に検索されます。現在実行中のメソッドが別のクラスで定義されているという事実は、これを変更しません。

于 2013-07-17T21:08:58.583 に答える
1

サブクラス MySubClass の MyPrMethod が呼び出されます。

于 2013-07-17T21:09:00.507 に答える