Java之訪問權限控制符以及結合繼承體系引起的注意事項

訪問修飾符的做用域:


private:能夠定義方法或者屬性,定義的方法和屬性不能被外部的類所訪問(包括子類)。
default:能夠在本包中的任意地方訪問。
protected:保護,不一樣包中的非子類不能訪問。(能訪問的成員包括相同包以及該類的任意子類)
public:公共的,均可以訪問,不受任何限制。

Java繼承&訪問修飾符結合使用引起的大混亂

1.子類重載方法的權限是否容許小於父類定義?其中,private<default<public
不容許, 注:Java中容許Parent  parent=new Children();的多態表現形式,若此時容許子類方法權限小 父類,則會出現變量申明爲Child類型時不容許訪問,申明爲Parent時則容許訪問,這很顯然邏輯不通。

2. 若是在父類中申明private方法,那麼在子類中使用default權限算是覆寫嗎?
不是覆寫,此時表示從新定義。

3. 父類與子類同名屬性的覆蓋問題
a.同名變量訪問權限相同:
變量的值取決於咱們定義的變量的類型,而不是建立的對象的類型(其中,private修飾的變量不予考慮),即:
Parent parent=new Parent();//父類的值
Parent childOfParent=new Child();//父類的值
Child child=new Child();//子類的值
b.子類訪問權限的修改不影響最終結果。

擴展閱讀:


相關文章
相關標籤/搜索