2013-06-06 123 views
4

试图在Parent类中创建1个接口和2个具体类。这将限定封闭类为Inner类。如何从静态main()方法调用内部类的方法

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(); 

     } 
} 

现在我真的不知道如何创建C类对象的静态main()方法中并调用C类的call()方法。 现在我在该行获得的问题:A a = new C();

回答

5

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

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

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

static class C extends B implements A 

那么它的确定使用,

A a = new C() 
1

你应该这样做

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

实例化一个内部类,你必须先实例化外部类。然后,创建外部对象内的内部对象与此语法:

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

所以你需要使用:

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

请参考Java Tutorial

+0

感谢提到javadocs链接 –