在四種訪問權限修飾符中,接觸最少的就是protected,很多人對protected的解釋含糊不清,那么被protected修飾符修飾的成員變數和方法是能夠被子類訪問到底是一個什么意思,
想必大家能夠理解protected修飾符修飾的成員能夠被本類與同包下的類訪問,對于 能被本類訪問 的意思在此不作解釋(十分容易理解),
首先來解釋一下什么是 能被同一個包下的類訪問
創建一一個 在test1包下的類Test1,其中有兩個被protected修飾的String型別的屬性,其中一個是靜態的

在test1包下創建另一個類 Test3,在該類中創建Test1物件,發現不論是否經過static的修飾,變數string 和string1 在Test3類中都能夠訪問到,

經過簡單的解釋大家也很容易理解在 同一個包下可以被訪問 是個什么意思,
那么接下來的問題就十分有意思,大家都知道子類可以訪問父類中被protected修飾的成員(成員屬性以及成員方法),對于在同一個包下的子類一定能夠訪問到父類中被protected修飾的成員,這很好理解就不作解釋,那么對于不同包下的子類是一個什么情況呢
此時在test2包下創建一個類Test2,該類繼承了Test1,先創建類Test2和類Test1的兩個物件
通過物件訪問其被protected修飾的屬性string 發現子類Test2物件能夠成功訪問到string,而無法通過父類Test1的物件訪問到string,這是什么原因呢?
用官方檔案的意思來解釋 :子類繼承其父類的所有公共和受保護成員,
所以能夠被子類訪問的意思是指,子類可以通過繼承的方式來訪問父類中被protected修飾的屬性,而不能通過創建父類物件的方式去訪問,
另外要注意的是:如果父類中被protected修飾的屬性同時被static關鍵字修飾,那么我們是可以在不同包下的子類通過 父類名.屬性名的方式去訪問該屬性,而不同包下的非子類卻不能夠訪問,

歡迎大佬批評指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302588.html
標籤:其他
