Java的private成員變量的繼承問題


java板塊關於private變量到底會不會被繼承,一直都有爭議。

  傳送門

 

另一種說法是非繼承關系,但是不能夠解釋為什么。

分析內存的分配后發現:

  當一個子類被實例化的時候,默認會先調用父類的構造方法對父類進行初始化,即在內存中創建一個父類對象,然后再父類對象的外部放上子類獨有的屬性,兩者合起來成為一個子類的對象。

 

  

  雖然說子類對象內存空間包含這個private變量,但是子類不能自己編寫函數對這個private變量進行直接修改,訪問。只能通過繼承下來的public函數對private變量進行修改,訪問。

  關於這些爭議,最佳的解決辦法是明白如何定義繼承。。。

  對於持非繼承觀點的人來說,繼承下載的變量或方法必須得能夠直接使用,即直接修改或訪問。這是符合傳統的繼承概念。

  對於持繼承觀點的人來說,因為子類內存中有private變量,即子類擁有private變量,它就應該是繼承的。

  

  對於這兩種想法,都有一定道理,但是書上定義偏向於第一種,因此個人接受第一種的思想。

 


免責聲明!

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



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