1. 程式人生 > >Java中子類能否繼承父類的私有屬性和方法

Java中子類能否繼承父類的私有屬性和方法

Java中子類繼承父類的私有屬性和方法

寫在前面:

已經正式從事java開發一年了,在寫一個demo的時候,突然發現繼承這塊的知識,以前都沒有注意到這些,原來自己掌握的很淺薄。

通過書本看到子類擁有父類的所有屬性和方法,於是寫程式去驗證,發現父類的私有屬性和方法,子類是不能訪問的,當然父類的某些私有屬性可以通過父類的非私有方法去訪問到,但是私有的方法不能在子類中直接訪問。於是我認為,子類不能繼承父類私有的屬性和方法;
但是通過網上查閱,分析了記憶體後,我發現我是錯誤的,在一個子類被建立時,首先會在記憶體中建立一個父類物件,然後在父類物件的外部放上子類獨有的屬性,這兩者結合起來形成了一個子類的物件。
所以在java繼承中,子類擁有父類所有屬性和方法可以這樣理解:

子類物件確實擁有父類物件中的所有屬性和方法,但是父類物件中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。就像有些東西你肯恩擁有,但是你並不能使用;

所以子類物件時絕對大於父類物件的,所謂子類物件只能繼承父類非私有的屬性及方法的觀點是錯誤的。可以繼承,只是無法訪問到而已。