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

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

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

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

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

 static class C extends B implements A 

然后可以使用,

 A a = new C() 

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

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

所以你需要使用:

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

请参阅Java教程 。

你应该做这个

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