Java訪問權限控制

訪問權限控制的等級,從最大權限到最小權限依次爲:publicprotected、包訪問權限(沒有關鍵字)和private

  • public:任何類都可以訪問;
  • protected:該類的子類及同包的類可以訪問;
  • 包訪問權限:同包的類可以訪問;
  • private:只有本類的成員可以訪問。

每個編譯單元只能有一個public類,否則編譯器就會報錯。當編譯一個.java文件時,在.java文件中的每個類都會有一個輸出文件,而該輸出文件的名字與.java文件中的每個類的名稱相同,只是多了一個.class的後綴名。因此,我們經常會發現只要編譯少量的.java文件,就會產生大量的.class文件。

訪問權限修飾符publicprotectedprivate在使用時,是置於類中每個成員的定義之前的,無論它是一個方法還是一個域。如果不提供任何訪問權限修飾符,則意味着它是“包訪問權限”。

如果創建了一個新包,並從另一個包中繼承類,那麼唯一可以訪問的成員就是源包的public成員。當然,如果在同一個包中繼承類,就可以訪問所有擁有包訪問權限的成員。protected也提供包訪問權限,也就是說,相同包內的其他類也可以訪問protected元素。

爲了控制某個類的訪問權限,修飾詞必須出現在關鍵字class之前。此外,還有一些額外的限制:

  • 每個編譯單元(文件)都只能有一個public類;
  • public類的名稱必須完全與含有該編譯單元的文件名相匹配,包括大小寫;
  • 雖然不是很常用,但編譯單元內完全不帶public類也是可能的。

最後,要注意:類既不可以是private的(這樣會使得除該類之外,其他任何類都不可以訪問它),也不可以是protected。事實上,一個內部類可以是private或者protected的,但這僅是一個特例。

發佈了24 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章