課程
/后端開發
/Java
/Java入門第二季 升級版
請問,在創造子類對象時,會自動調用父類構造方法,然后再調用子類構造方法,那么它有沒有創造父類對象呢?
2018-11-01
源自:Java入門第二季 升級版 9-7
正在回答
對于常規意義上的對象,如果將對象看為可以引用的類變量實例,那當然是沒有;不過的確創建子類時的確在內存中開辟了一個內存區建立了父類(包括private)在內的實例域,但父類對應內存無法直接引用無法簡單成為對象(在編譯器層次上可以將這個內存等同于一個父類對象處理,這需要高超的技巧)。因此物理內存概念和java語言層次就能很好理解這個問題。
M_Yee
參考了別人的問題,我自己來答。
答案是沒有。參見帖子
精彩答案:
一個對象可以理解為一個房子,而一個類只是規定了什么地方要放什么東西,比如客廳要放沙發,餐廳要有餐桌創建一個新對象,就是建造一棟新房子,如果你不去初始化對象,那么這個房子就是空的,沒有任何裝飾家具,你也不能用它來做任何有意義的事(當然這只是個比喻,空房子不能說沒有用)當調用構造函數時,才會真正讓這個對象有意義,那就是布置這個房子,布置這個房子有很多設計師,子類和父類就是兩個設計師,他們之間的關系可以理解為父類設計師是子類設計師的指導,首先子類會讓父類先來,父類說他要A?B?C?D?E等等,于是就叫人搬來這些東西放在房子里,父類布置好了,子類就來布置了,子類就會繼續在房子里添置家具等等,有時候父類和子類會有沖突,比如父類說瓷磚地板好,子類說木地板好,這時候以子類為準,因為最終這個房子是給子類的,父類只是一個顧問指導而已,這就相當于方法重寫。所以如果你說創建一個子類對象會不會同時也創建了父類對象,那答案肯定是沒有說有的如果他的意思是這個子類對象在某個時刻完全是一個父類對象,因為那個時刻他具備了父類對象所有的特征,但不具備子類的特征,那還是可以接受的,但這個過程只會創建一個對象,如果說有的認為創建了兩個或者更多的對象,那肯定是錯誤的。
出處:帖子第九樓
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答子類對象構造時,只能調用父類無參的構造方法?
2 回答子類調用父類方法問題(非構造)
3 回答老師說創建子類對象時,會自動執行父類的構造方法,并創建父類對象
2 回答請問如果父類只有有參的構造方法,那么子類的構造方法中就隱性調用了父類的構造方法。
3 回答子類如何調用父類有參的構造方法?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-12-04
對于常規意義上的對象,如果將對象看為可以引用的類變量實例,那當然是沒有;不過的確創建子類時的確在內存中開辟了一個內存區建立了父類(包括private)在內的實例域,但父類對應內存無法直接引用無法簡單成為對象(在編譯器層次上可以將這個內存等同于一個父類對象處理,這需要高超的技巧)。因此物理內存概念和java語言層次就能很好理解這個問題。
2018-11-01
參考了別人的問題,我自己來答。
答案是沒有。參見帖子
精彩答案:
一個對象可以理解為一個房子,而一個類只是規定了什么地方要放什么東西,比如客廳要放沙發,餐廳要有餐桌
創建一個新對象,就是建造一棟新房子,如果你不去初始化對象,那么這個房子就是空的,沒有任何裝飾家具,你也不能用它來做任何有意義的事(當然這只是個比喻,空房子不能說沒有用)
當調用構造函數時,才會真正讓這個對象有意義,那就是布置這個房子,布置這個房子有很多設計師,子類和父類就是兩個設計師,他們之間的關系可以理解為父類設計師是子類設計師的指導,首先子類會讓父類先來,父類說他要A?B?C?D?E等等,于是就叫人搬來這些東西放在房子里,父類布置好了,子類就來布置了,子類就會繼續在房子里添置家具等等,有時候父類和子類會有沖突,比如父類說瓷磚地板好,子類說木地板好,這時候以子類為準,因為最終這個房子是給子類的,父類只是一個顧問指導而已,這就相當于方法重寫。
所以如果你說創建一個子類對象會不會同時也創建了父類對象,那答案肯定是沒有
說有的如果他的意思是這個子類對象在某個時刻完全是一個父類對象,因為那個時刻他具備了父類對象所有的特征,但不具備子類的特征,那還是可以接受的,但這個過程只會創建一個對象,如果說有的認為創建了兩個或者更多的對象,那肯定是錯誤的。
出處:帖子第九樓