6

親クラス内に 1 つのインターフェイスと 2 つの具象クラスを作成しようとしています。これにより、囲んでいるクラスが内部クラスであると見なされます。

public class Test2 {

       interface A{
             public void call();
       }

       class B implements A{
             public void call(){
                   System.out.println("inside class B");
             }
       }

       class C extends B implements A{
             public void call(){
                   super.call();
             }
       }


       public static void main(String[] args) {
              A a = new C();
              a.call();

       }
}

今、静的な main() メソッド内でクラス C のオブジェクトを作成し、クラス C の call() メソッドを呼び出す方法がよくわかりません。現在、次の行で問題が発生しています: A a = new C();

4

3 に答える 3

11

ここでは内部クラスは静的ではないため、外部クラスのインスタンスを作成してから new を呼び出す必要があります。

A a = new Test2().new C();

しかし、この場合、内部クラスを静的にすることができます。

static class C extends B implements A

それなら使えばOK

A a = new C()
于 2013-06-06T06:00:04.040 に答える
4

内部クラスをインスタンス化するには、まず外部クラスをインスタンス化する必要があります。次に、次の構文を使用して、外側のオブジェクト内に内側のオブジェクトを作成します。

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

したがって、使用する必要があります:

A a = new Test2().new C();

Java チュートリアルを参照してください。

于 2013-06-06T06:01:54.097 に答える
1

これを行う必要があります

 A a = new Test2().new C();
于 2013-06-06T05:58:36.790 に答える