2013-06-06 164 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鏈接 –