2016-02-12 26 views
-1

我在線閱讀了關於內部類的內容,但是這裏的nquestion是關於一個java主類,它在主類之外有其他小類,但是在同一個文件中。Java Class在主類之外擁有另一個類

我想知道這是否是一個優於內部類的設計/將類放入其自己的文件中。

但是通過封裝,我應該把它們一起分組在一起嗎?

File Name : MainClass 

    public MainClass{ 
    .... 
    } 
    class InnerClass{ 
    } 

什麼是這樣做的好處在內部類,這是一個很好的設計模式與

到處開始我已經閱讀網上,他們以這種方式

File Name : MainClass 
    Public MainClass{ 

     class innerClass{ 
     }  
    } 
陳述有關的內部類

爲什麼有人比第二個更喜歡第一個,當secon類是非靜態類?

+0

你不能在同一個文件中聲明多個非嵌套類;它不會編譯。 –

+0

@AndrewWilliamson你可以只要其中一人宣佈公開 – MartinS

+0

Whaaat?你的意思是,所有這一次,我一直......嗯。 –

回答

1

我很少這麼做,但在某些情況下它可能有意義。想象一下,你有一個publicabstract)的基地class,你只想公開這一個,但沒有包的其他子類。這個class提供了一種創建實例的方法,它將成爲子類之一。 然後可以有意義將子類放入同一個文件 - 假設實現相當短,否則你將有一個巨大的文件,這又是一個糟糕的設計。

老實說,它沒有什麼區別,那麼你是否將它們作爲static內部類或作爲同一個文件中的類,但在其他class之外。但從概念上講,我會把它們放在主要class之外,只是因爲它們不是主要類的一部分。

public abstract class A { 

    public static A createInstance(...) { 
     if (...) { 
      return new B(); 
     } else { 
      return new C(); 
     } 
    } 
} 

class B extends A { 

} 

class C extends A { 

} 
相關問題