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.子類訪問權限的修改不影響最終結果。

擴展閱讀:





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM