訪問修飾符,即對訪問範圍的控制。在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稍有不同,通俗的說,它提供了給外部包中的類訪問的機會,相應地增加了程序之間的聯繫,提供了更多樣的方式.