天天看點

再學Java 之 private、protected、public和default的作用域

前言:如果提到protected的通路控制級别,您的第一反應是”隻能是子類才可以通路“,那麼您很可能需要往下看。

首先,大緻介紹一下各個通路控制符的通路控制級别(具體的介紹很多大牛的博文都有介紹,我就不細說了,可以點選檢視),如下圖:

private

default

protected

public

同一個類中

同一個包中

子類中

全局範圍内

在這裡,很多人都存在一個誤區,就是,認為protected修飾的方法隻能在子類中才能通路,其他情況下不行;事實上,正确的表述方式應該是”如果在同一個包,則protected修飾的成員都可以被通路到;假如不在同個包,則隻有子類才能通路到“。

下面寫一個執行個體(也可以到 下載下傳):

(1)首先是程式的結構,這裡,有兩個包,分别有com.harvin包含parent和child類;com.other包含other_child類

再學Java 之 private、protected、public和default的作用域

(2)com.harvin.parent類的代碼:

(3)com.harvin.child類代碼:

(4)com.other.other_child類的代碼: