2012-12-16 43 views

回答

3

這不是一個指導方針,沒有。

信息隱藏原理告訴我們只暴露了要求的,只是爲了儘量減少耦合。例如,如果一個類允許您更輕鬆地處理單獨類中的邏輯,並且僅被該類使用,則沒有理由公開它,也不應該公開它。

1

這取決於,對於頂級課程,如果您希望其他課程在不同的包裝中查看您的課程,您應該使用mark it public。如果你只想讓班級在同一個包中查看你的課mark it default(無修飾)。

1

所以,你的問題是真的,所有的頂級課程都應該公開嗎?我認爲它歸結爲您在項目中使用的包訪問的用法。前段時間,This question與此相關。

1

通常大多數類都是公開的,但有些情況下您可能也想使用默認或私有作用域。

使用默認範圍的類只能由同一包中的其他類訪問。例如,在助手類的情況下,隨着代碼變得越來越多,以這種方式限制它們的使用通常是一種好的做法。encapsulated。出於同樣的原因,私人範圍通常可以用於內部類。

1

不,它不是。有很多類與其他訪問說明符甚至匿名。例如,您可以編寫私人或匿名類,這些類可以註冊到聽衆,如 'ActionListener'和'ItemListener'。就像那樣,爲了各種目的,我們寫很多沒有公共說明符的類。它確實有助於將你的工作分解成幾部分。

但是,在Java中,通常每個源文件都包含一個公共類。這是因爲如果源文件的名稱是'Reader.java',那麼您不能在該源文件中爲類'Reader'提供專用或其他訪問說明符。它必須是公開的或默認的。除此之外,沒有其他類可以使用訪問說明符'public'而不是'Reader'類。

其他的事情是,私人的,受保護的和類別的其他類型(默認情況下)不能作爲「獨立班級」寫入源文件。舉個例子,下面是一個錯誤

Check.java

private class Check 
{ 

} 
2

簡單的回答你的問題是 「不!」

稍微複雜一點是,如果需要由自己的軟件包以外的其他類使用,則只應該公開一個類。但是,如果像我一樣,爲了可讀性而打斷了你的許多包,那麼如果你的類需要被公開才能被使用,那麼情況往往如此。

雖然你的問題很簡單,但它的本質並不簡單。很大程度上取決於你寫作的代碼種類。它正在編寫一個圖書館,然後在外部使用,這可能是你的議程中很高的。在一個應用程序中更少。

我發現我更喜歡公開的方法。我嘗試設計重用,因爲它使我的選擇保持開放,使我由於重用問題而更仔細地考慮了我的實現,並且導致了更好的代碼。但它確實是課程的馬匹,你是這個等式中最大的變量。

1

這絕對不是最佳實踐。你看到它,因爲大多數程序員不知道頂級類不必公開。

理想情況下,一個軟件包不僅僅是一種組織類的方法。沒有最小或最大數量的類屬於一個包中;相反,只有在需要包級別的類和/或成員時才應創建子包。 Java API可以做到這一點,並且由於從Sun/Oracle發佈的javadoc是爲受保護級別的類和成員生成的,所以某些程序包可能看起來很稀疏,即使這樣看起來也不是這樣。

例如,javax.swing.colorchooser軟件包似乎只有四個類,但它實際上有17個(實際數可能會因Java版本而異)。四個是公開的;其餘的僅用於JColorChooser內部。

我發現內部類變得太大而無法作爲內部類輕鬆維護,通常是非公共頂級類的良好選擇。