2013-05-27 44 views
25

我注意到,如果在上課之前不寫public,它的作用與public class相同。我不明白爲什麼這樣?當我沒有聲明課程爲public,privateprotected時,它應該顯示錯誤。但它工作正常。是什麼原因?`public class`和just`class`有什麼區別?

+1

[這將爲您提供足夠的答案。](http://stackoverflow.com/a/16728381/1079354) – Makoto

+0

您可以參考此鏈接,提供相同的知識: http://stackoverflow.com/questions/614818/what-is-the-difference-between-public-private-protected-and-nothing/614844#614844 – Deepak

回答

24

publicprotectedprivate是訪問修飾符。公共意味着這個主題可以被任何類訪問,由子類保護,由類本身保護,沒有修飾符意味着「包保護」,因此主題可以被同一個包中的類訪問。

主題是類,方法,成員變量。

4

默認情況下類爲package private(如概述here),因此它的行爲方式不同。你只是認爲這是因爲你沒有試圖從不同的包裝中消費你的課程。

0

對於類聲明是avaible只有兩個關鍵字:

  • 公共。實例:公共類學生{// ...}
  • 私人包(默認)。實例:類注意事項{// ...}只有在他的包裝中才能看到。

只有當您在類中聲明成員時,纔可以使用private和protected。 例子:

public class Student{ 
protected Note note; 
} 
0

如果你不給訪問修飾符它的默認包私有訪問。課程無法在課程外進行訪問。理想情況下,JLS應該包含一個關鍵字包訪問,以避免混淆和意想不到的後果。

喜歡的東西,

default class Student{} 
1

必須有每個.java源文件只有一個公共類和文件必須與這個公共類相符的名稱。

在SO上提出過類似的問題。請找到它here

0

它的工作原理是相同的,只是因爲你正在使用的可能只是一個文件而且在同一個包中。

如果你有多個包,那麼你有問題。在類的名稱之前沒有「public」的類不能在另一個包中創建。你不能使用它的構造函數。你只是不能在創建類的包之外訪問它。

相關問題