論protected和friendly限制符的區別

論protected和friendly限制符的區別

對於java的方法,有四個限制標識符,public 、private 、friendly(默認)、protected,他們大概的作用域如下圖:

那麼這個作用域是什麼意思呢
1、private私有,意思是隻能在定義該方法的當前類中調用該方法,並且子類無法繼承該方法。
2、public 共有,能在所有類中調用該方法
3、對於friendly方法來說,他只能被與定義它的類在同一個包中的類所調用(只要涉及跨包都不能被調用,也就是不能通過不同包的類的對象來調用)
4、對於protected來說,除了可以被與定義它的類在同一個包中的類所調用,還可以被繼承定義他的類的類中調用
現在詳細來講protected 和 friendly,如下圖

其中p1,p2是包,ABC在p1,EFG在p2, Parent是p1包中的類,ABEF分別是Parent的子類,CG不是Parent的子類,
Parent中有friendly方法f,protected方法p
1、在與父類同包的類中調用在父類中定義的方法
例子: 在ABC中對Parent、ABEF的類進行實例化,然後調用f和p方法:
結果是:以上方法的p方法都能被調用,而EF中的f方法不能被調用,因爲涉及了跨包
2、在與父類不同包,但繼承了父類的類中調用父類中定義的方法
例子: 在E中對Parent、ABEF的類進行實例化,然後調用f和p方法
結果是: 以上方法中只有對E(自己)的實例化對象能調用p方法,其他都不能調用,包括Patent實例化的對象。
3、在不同包,且不繼承的類中調用方法
例子: 在G中實例化後調用,
結果是: 什麼方法都不能被調用。

補充:在E中可以通過super.p 去調用



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