2014-12-20 20 views
0

我一直在閱讀Bruce Eckel的Thinking in Java,當談到訪問控制章節時,它說如果一個java文件有兩個或更多的類,除了公共之外,其他人不能成爲private(這將使除了班級以外的任何人都無法進入)或protected使用私有來指定一個類的訪問控制

但是我看到很多流行的java庫和開源項目都使用private來裝飾這些類。

那是因爲這本書太理論還是其他原因?

原文(231頁,第四版)

注意,一個類不能是私有的(這將使它無法訪問任何人,但類)或保護。所以,你只有兩個選擇:包裝訪問或公共。如果您不希望其他任何人訪問該類,則可以將所有構造函數設爲私有的,從而防止除您之外的任何人在該類的靜態成員內創建該類的對象。

+6

我強烈懷疑你只是誤讀了這本書。 – CommonsWare

+0

我認爲CommonsWare是正確的,無論如何private和protected可以與內部類(類內部的類)一起使用,但不能與不在任何類內的類一起使用 – niceman

+0

本書現在已經很老了;你應該預料它會過時。與目前的Java相比,在這段簡短的段落中有幾處不同尋常的地方。 –

回答

3

該聲明僅適用於頂級(非嵌套)類。嵌套類可能是private。這是因爲頂級類可以看到私有嵌套類(包括嵌套類的私有成員),反之亦然。它們也可以是protected,意思是包含類的子類,即使在另一個包中也可以引用它們。

請注意,這不是唯一聲明多個頂級類的Java文件。任何頂級類別聲明都不允許使用privateprotected

相關問題