? 所謂訪問權限,指的就是本類中的成員變量、成員方法對其他類的可見性
?
試想一想,當我們修改一個非常龐大的項目時,如果所有變量和方法都是公共權限,那么后端中任何類都有權限去修改它的變量和方法,很有可能修改后就導致項目無法運行,對客戶端的代碼就會造成一定的影響
引入訪問權限的概念就變得尤為重要
Java中有四種訪問權限,分別是「public、protected、包訪問權限(默認)、private」,如果省略了訪問修飾符,那默認訪問權限為「包訪問權限」。 這四種權限從「最大權限」到「最小權限」分別是: public > protected > 包訪問權限> private
類的成員變量和方法訪問權限
放一個看了很久卻不一定記住的表:
ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
「包訪問權限:」 沒有任何修飾符的權限就是「包訪問權限」,意味著當前包的所有類都可以訪問這個成員,如表中所示,對于本包之外的類,這個成員就變成了「private」,訪問不了
「public:」 被public修飾的成員對任意一個類都是可用的,任何一個類都可以訪問到,通過操作該類的對象隨意訪問「public」成員
「protected:」 在相同的class內部,同一個包內和其他包的子類中能被訪問。要理解「protected」權限,就需要了解「繼承」,因為這個權限處理的就是繼承相關的概念,繼承而來的子類可以訪問「public、protected」,
「private:」 除了包含這個成員的類之外,所有類都無法訪問這個成員,相當于自我封閉,防止其他類改變或刪除這個方法
類的訪問權限
Java中的訪問權限也可以用來修飾類。不過需要注意,對于普通類而言,類的訪問權限僅有「public」和「包訪問權限」
· 如果一個類聲明的時候用了「public」,則該類的類名必須與文件名一致,包括大小寫,如果不匹配,會有編譯錯誤
· 每個編譯單元(文件)都只能有一個public類
· 當然不帶public也是可以的,這時可以隨時對文件命名
總結
對成員進行訪問控制還是非常重要的,可以防止他人觸碰那些不該觸碰的部分,也可以清楚的了解哪些是重要的,哪些是可以忽略的,簡化了對類的理解