0

私のクラスアーキテクチャは次のようになります。

インターフェイス「myInterface」があります。「myInterface」を実装するクラス「mySuperMostClass」を作成します。ここで、「mySuperMostClass」を拡張するクラス「myBaseClass」を作成します。次に、「myBaseClass」を拡張する「mySubClass」を作成します。「mySubClass」の「myBaseClass」からメソッド「methodA」、「methodB」をオーバーライドしました。

「methodB」は「methodA」から呼び出されます

ここで、mySubClass のオブジェクトを作成し、「myInterface」のインスタンスで参照します。myInterface のインスタンスで methodA を呼び出すと、「myBaseClass」からの実装が呼び出されます。しかし、「mySubClass」と呼びたいです。これを行うのを手伝ってください。

Java 1.5 を使用しています

4

1 に答える 1

1

まず、実際のクラス名が小文字で始まっていないと確信しています。もしそうなら、Java Naming Conventionについて読むことをお勧めします。

親クラスのメソッドをオーバーライドするときは、メソッドのシグネチャが一貫していることを確認してください。たとえば、 というメソッドがある場合public void method(String input)、同じ署名が子クラスで維持されていることを確認する必要があります。

したがって、あなたの質問を読んで、正しい実装は次のようになると思います。

public interface MyInterface{
}

class  MySuperMostClass implements MyInterface{

}

class  MyBaseClass extends MySuperMostClass{
    public void methodA(){
    }

    public void methodB(){
    }
}

class MySubClass extends MyBaseClass{

    @override
    public void methodA(){
        methodB();
    }

    @override
    public void methodB(){
    }
}

注:メソッドの実際の署名についてはよくわからないため、パラメーターなしのままにしています。あなたの場合、署名が同じままであることを確認してください。

そして、あなたが呼び出す方法は次のようになります:

MyInterface myObject = new MySubClass();
myObject.methodA();
于 2012-09-26T03:16:49.993 に答える