java—如何从静态main()方法调用内部类的方法

bsxbgnwa  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(360)

尝试在父类中创建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();

       }
}

现在我不太清楚如何在static main()方法中创建类c的对象并调用类c的call()方法。现在我遇到了一个问题: A a = new C();

xriantvc

xriantvc1#

你应该这样做

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

mwecs4sa2#

这里内部类不是静态的,所以需要创建外部类的示例,然后调用new,

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

但在这种情况下,可以使内部类保持静态,

static class C extends B implements A

那就可以用了,

A a = new C()
whhtz7ly

whhtz7ly3#

要示例化内部类,必须首先示例化外部类。然后,使用以下语法在外部对象中创建内部对象:

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

所以你需要使用:

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

请参阅java教程。

相关问题