2013-07-05 16 views
2

爲什麼即使文件名不同,爲什麼javac編譯具有默認修飾符的類,以及訪問修飾符爲public,private或protected時爲什麼不能訪問? 例如:文件名:文件 類Foo {}即使文件名不同,javac也會使用默認訪問修飾符編譯類

它被編譯沒有錯誤,如果我添加的公共,私人或受保護的盈類的它是沒有得到編譯任何一個可以解釋爲什麼它如此

測試 內容

回答

2

有兩個規則

  • 如果聲明類型public那麼文件名應該是同一類型可以是classinterface
  • 有canno t是privateprotected外部類。

爲什麼第一點的答案是java規範的定義方式。 你不能將外部類聲明爲私有類,因爲它根本不會服務於任何目的。

  • 只要您喜歡,您可以在源文件中包含類型,但只能有一個公共類型,並且如果存在公共類型,則文件的名稱必須與公共類型匹配。
+0

是否有什麼理由爲什麼java的創建者在默認修飾符類的情況下給出了一個異常? –

+0

因爲類必須在包中可見。 '默認'訪問級別意味着它們在該包中可見 –

+0

我在問他們爲什麼在文件名的情況下給出帶有默認修飾符的類的例外 –