java板塊關於private變量到底會不會被繼承,一直都有爭議。
另一種說法是非繼承關系,但是不能夠解釋為什么。
分析內存的分配后發現:
當一個子類被實例化的時候,默認會先調用父類的構造方法對父類進行初始化,即在內存中創建一個父類對象,然后再父類對象的外部放上子類獨有的屬性,兩者合起來成為一個子類的對象。
雖然說子類對象內存空間包含這個private變量,但是子類不能自己編寫函數對這個private變量進行直接修改,訪問。只能通過繼承下來的public函數對private變量進行修改,訪問。
關於這些爭議,最佳的解決辦法是明白如何定義繼承。。。
對於持非繼承觀點的人來說,繼承下載的變量或方法必須得能夠直接使用,即直接修改或訪問。這是符合傳統的繼承概念。
對於持繼承觀點的人來說,因為子類內存中有private變量,即子類擁有private變量,它就應該是繼承的。
對於這兩種想法,都有一定道理,但是書上定義偏向於第一種,因此個人接受第一種的思想。