Java中四種訪問權限

  
場景1:工程師A編寫了一個類ClassA,但是工程師A並不希望ClassA被該應用中其他所用的類都訪問到,那麼該如何處理?
  
場景2:如果工程師A編寫了一個類ClassA,其中有兩個方法fun1、fun2,工程師只想讓fun1對外可見,也就是說,如果別的工程師來調用ClassA,只可以調用方法fun1,那麼該怎麼處理?

此時,訪問權限控制便可以起到作用了。

在Java中,提供了四種訪問權限控制:默認訪問權限(包訪問權限),public,private以及protected。

一、Java中有四種訪問權限

private、default(一般省略)、public、protected
在這裏插入圖片描述

  • private : Java語言中對訪問權限限制的最窄的修飾符,一般稱之爲“私有的”。被其修飾的屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。

  • default: 即不加任何訪問修飾符,通常稱爲“默認訪問權限“或者“包訪問權限”。該模式下,只允許在同一個包中進行訪問。

  • protected: 介於public 和 private 之間的一種訪問修飾符,一般稱之爲“保護訪問權限”。被其修飾的屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。

  • public: Java語言中訪問限制最寬的修飾符,一般稱之爲“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包訪問。

注意

  • 上述四種訪問權限,只有默認訪問權限和public能夠用來修飾類。修飾類的變量和方法四種權限都可以。(本處所說的類針對的是外部類,不包括內部類)
  • 所謂的訪問,可以分爲兩種不同方式:
    1. 第一,通過對象實例訪問;
    2. 第二,直接訪問。

  比如說,某父類protected權限的成員,子類是可以直接訪問的,換一種說話是子類其實繼承了父類的除了private成員外的所有成員,包括protected成員,所以與其說是子類訪問了父類的protected成員,不如說子類訪問了自己的從父類繼承來的protected成員。
  另一方面,如果該子類與父類不在同一個包裏,那麼通過父類的對象實例是不能訪問父類的protected成員的。

二、下面用表格來展示四種修飾符的訪問權限範圍:

passwd


三 、關於Java包和類文件的知識:

  • Java中的包 主要是爲了防止類文件命名衝突以及方便進行代碼組織和管理
  • 對於一個Java源代碼文件,如果存在public類的話,只能有一個public類,且此時源代碼文件的名稱必須和public類的名稱完全相同,另外,如果還存在其他類,這些類在包外是不可見的
  • 如果源代碼文件沒有public類,則源代碼文件的名稱可以隨意命名。

參考 :

  • https://blog.csdn.net/itachiyang/article/details/43647909
  • https://zhuanlan.zhihu.com/p/81440851
  • https://www.cnblogs.com/dolphin0520/p/3734915.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章