詳解訪問修飾符protected和default的區別

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/youngogo/article/details/81137175

訪問修飾符,即對訪問範圍的控制。在Java中,有以下幾種訪問修飾符:

1.對類而言:

(1)public:在所有的包中均可見

(2)default(默認):只在該類所在包中可見

注:類不能用private和protected來修飾

2.對成員變量和成員方法而言:

(1)public:在所有包中均可見(且可調用)

(2)protected:包內所有類中均可見(且可調用),包外有繼承關係的子類可見(僅可在子類內部調用)

(3)private:只在同一個類中可見(且可調用)

(4)default(默認):

注意:

在同一個包中,儘管是protected的方法和屬性,包內的任何類都可以訪問到。

在父類和子類不在同一個包中的前提下,對於子類來說,子類繼承了父類所有的屬性和方法(任何訪問修飾符),雖然對從父類繼承來的protected的屬性和方法可見,但是只能在子類的內部進行訪問,即:(this.)方法名、(this.)屬性名進行訪問和操作,而無法在外部對子類進行實例化,並用子類對象.protected方法或屬性來訪問。

舉個簡單的例子,我們都知道Object類是所有類的父類,而在Object中有一個叫clone()的方法,那我們在實例化對象後能調用這個函數嗎?通過實踐證明是不可以的,給出的錯誤提示是:The method clone() from the type Object is not visible.該方法是不可見的,這就類似於我們剛剛提到的,雖然子類從父類中繼承過來了包括protected的方法和屬性,但對於外部的類都是無法獲取到的。

最後補充說明protected修飾限定符的作用意義

protected修飾限定符,和private一樣具有保護屬性和方法的作用,但是它和private稍有不同,通俗的說,它提供了給外部包中的類訪問的機會,相應地增加了程序之間的聯繫,提供了更多樣的方式.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章