Java中子類繼承父類的私有屬性和方法
寫在前面:
已經(jīng)正式從事java開發(fā)一年了,在寫一個demo的時候,突然發(fā)現(xiàn)繼承這塊的知識磁奖,以前都沒有注意到這些,原來自己掌握的很淺薄破加。
通過書本看到子類擁有父類的所有屬性和方法,于是寫程序去驗證兔港,發(fā)現(xiàn)父類的私有屬性和方法庸毫,子類是不能訪問的,當然父類的某些私有屬性可以通過父類的非私有方法去訪問到衫樊,但是私有的方法不能在子類中直接訪問飒赃。于是我認為利花,子類不能繼承父類私有的屬性和方法;
但是通過網(wǎng)上查閱载佳,分析了內存后炒事,我發(fā)現(xiàn)我是錯誤的,在一個子類被創(chuàng)建時蔫慧,首先會在內存中創(chuàng)建一個父類對象挠乳,然后在父類對象的外部放上子類獨有的屬性,這兩者結合起來形成了一個子類的對象姑躲。
所以在java繼承中睡扬,子類擁有父類所有屬性和方法可以這樣理解:
子類對象確實擁有父類對象中的所有屬性和方法,但是父類對象中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。就像有些東西你肯恩擁有黍析,但是你并不能使用卖怜;
所以子類對象時絕對大于父類對象的,所謂子類對象只能繼承父類非私有的屬性及方法的觀點是錯誤的橄仍∪驼牵可以繼承,只是無法訪問到而已侮繁。