2010-05-11 64 views
98

我已經在Java中實現了一個嵌套類,我需要從內部類調用外部類方法。從內部類調用外部類函數

class Outer { 
    void show() { 
     System.out.println("outter show"); 
    } 

    class Inner{ 
     void show() { 
      System.out.println("inner show"); 
     } 
    } 
} 

我怎樣才能調用Outer方法show

+0

我們能否假設你的內部類保持外類的實例? – Eric 2010-05-11 06:33:24

+12

@Eric:在java中,非靜態內部類的實例始終保存外部類的實例 – newacct 2010-05-11 06:35:11

+0

@Eric:在非靜態Java內部類中始終爲真! – 2010-05-11 06:36:29

回答

174

您需要通過外部類的前綴電話:

Outer.this.show(); 
+3

太好了。我對此有跟進。如何通過擁有內部類實例從完全不同的地方調用外部類中的方法。 Inner myInner = new Outer()。new Inner(); ...例如,如果外部類具有公共方法getValue()。 myInner.getValue()不會工作,myInner.Outer.getValue()也不會。我知道我可以通過在Inner中有一個方法getOwner來完成,然後調用它..但是我需要那種方法嗎?謝謝 – momomo 2011-12-09 13:41:35

+0

如果outer是一個接口,那麼如何從內部類調用抽象方法..? – 2017-08-08 12:49:49

1

這應該做的伎倆:

Outer.Inner obj = new Outer().new Inner(); 
obj.show();