2013-10-16 62 views
5

我想查詢一下java中的類聲明是否只能是public默認類聲明 - 公共和默認

我讀過一個文件裏只能有一個public類,那個文件應該是這個類的名字。

例如Test.java

public class Test { 

} 

但我觀察到,在一類,我可以沒有public類,但可以有很多默認類。

例如Exam.java

class Exam { 

} 

class Examination { 

} 

爲什麼,我只能有一個public類,但可以有一個文件裏面很多默認類?

+0

一個類只能被聲明爲public或者package private(如果沒有修改被應用到它的聲明中,它是包私有的)。除非是內部類或靜態嵌套類,否則不能將類聲明爲「private」或「protected」。公共類需要保存在與類名稱相同的文件中的類。 – Lion

回答

7

爲什麼我只能有一個公共類,但在一個文件中可以有多個默認類 ?

7.6. Top Level Type Declarations

該限制意味着必須有每 編譯單元最多有一個這樣的類型。 此限制使Java編譯器 可以輕鬆找到包中的命名類。實際上,許多程序員 選擇將每個類或接口類型放入其自己編譯的 單元中,而不管它是否公開或由其他 編譯單元中的代碼引用。

如果一個類沒有修飾符(默認修飾符),它只能從同一個包中訪問。

+2

+1,默認爲'package-private'。 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ總是在那裏改善答案:)謝謝。 – Maroun

3

這是另一個回答者指出的設計決定。這可以幫助您長期組織代碼。儘管你可以有公共的內部類。