1

私はJavaを初めて使用しますが、OOPプログラミングに慣れています。以下のコードのように、別の抽象クラスにネストされた抽象クラスを強制的に実装する方法はありますか?

public abstract class A
{

    public abstract class B extends C
    {
        @Override
        public abstract void foo();

    }

}

BをAの各サブクラスに実装したいのですが、可能ですか?

ご協力ありがとうございました、

4

3 に答える 3

6

あなたの質問を正しく読んだ場合、A の各サブクラスに B のサブクラスを含めたい場合、これを行う直接的な方法はありません。ただし、次のようなことを行うことができます。

public abstract class A
{

  public abstract class B extends C
  {
      @Override
      public abstract void foo();
   }

   protected abstract B getBInstance();
}

これにより、A のサブクラスが B のインスタンスを返すように強制されるため、B の何らかのサブクラスにアクセスできる必要があります。

ただし、A が上記を必要とする何らかの方法で B を使用しない限り、B を実装するサブクラスを A が気にする必要がある理由を自問する必要があります。

于 2012-04-25T15:39:10.303 に答える
2

はい、When an Abstract Class Implements an InterfaceBに示すように、インターフェイスを作成します。

于 2012-04-25T15:31:05.470 に答える
0

これは不可能です。A クラスは、(抽象メソッドまたは実装メソッドのいずれかを介して) A のインスタンスが持つ動作のみを提供する必要があります。A の実装方法については何も述べるべきではありません。

実装されたクラス B を呼び出すことができなかったため、これがどのように役立つかは明らかではありません。そのため、別の名前を付ける必要があり、その存在を無視することができます。

于 2012-04-25T15:38:50.097 に答える