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

然后就可以使用了

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 回答