2013-08-27 97 views
1

其中之一。如果我有下面的類私有方法或內部類,使用

public class Foo { 
     public void bar(){ 
      fooBar(); 
     } 
     private void fooBar(){ 
      System.out.println("text..."); 
     } 
    } 

,而不是我也可以這樣做

public class Foo { 

     public void bar() { 
      new inner().fooBar(); 
     } 

     private class inner { 
      private void fooBar() { 
        System.out.println(" text ..."); 
      } 
     } 

    } 

的東西時,我應該用內部類,而不是私有方法?如果功能特定於class Foo,那麼使用內部類是有意義的,但也可以通過private method實現,只能在類內部訪問。

+0

使用一個內部類,如果你想與海誓山盟組數據應當只在外部類的範圍內使用,並會最好通過一個對象訪問。私有方法和內部類不具有相同的功能。你的方法應該放在最合適的班級。 –

+0

你看過這個例子嗎? http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html – kosa

+0

在這種情況下,我只是使用選項1.它沒有看到選項2的點。 – SamFisher83

回答

4

對於您的示例,您不需要內部類。您的第一個解決方案非常簡單,易於閱讀和充分。

  • 你需要實現一個接口,但不希望外部類來實現它:當

    內部類是非常有用的。

  • 可以有一個以上的實例這個類。
  • 可以有多個類型的內部類。

編輯:每個的實例,由請求

  • 一種接口可能是由內部類以實施迭代器模式,或一個可運行,...
  • 內部類的多個實例對於實現迭代器或內部映射的特殊鍵類型可能是必需的...
  • 種多種類型的內部類的可能是必要的策略模式,...
+0

「可以有一個以上的班級實例」 - 你能請解釋一個簡單的用例 – user2720864

+0

@ user2720864 - 當然 - 請參閱上文。我爲他們提供了用例。 –