Java 子類實例化對象的過程


子類實例化是否會實例化父類?

不會。父類在子類實例化過程中是並沒有被實例化,java中new子類沒有實例化父類,只是調用父類的構造方法初始化了,
子類從父類繼承來的屬性,這個調用是子類的對象調用的父類的構造方法,而子類自己的構造方法完成對自己屬性的初始化
(這里的初始化是指我們在內存分配完了,虛擬機初始化之后,我們按自己的要求進行的初始化)。


子類對象實例化的全過程

1.當最底層子類實例化對象時,它的父類,父類的父類...到Object類的所有類的構造器都會被調用,只不過當一個類擁有多個構造器時,調用的是其中一個。 2.子類構造器內,默認調用父類構造器:super();當有this關鍵字時,就不調用父類構造器了,就會調用同一個類內的其他構造器,所以一個類當有n個構造器時,僅允許最多有n-1個構造器內使用this關鍵字,最少有一個構造器去調用上層父類的構造器。 3.當父類重載一個構造器,則默認的無形參構造器就會消失,父類又不重載另一個無形參的構造器,那么子類構造器不使用this或super關鍵字就會出錯,因為子類構造器不使用this和super關鍵字,默認調用父類的無形參構造器,而這個構造器不存在,就會出錯,解決辦法:1)父類聲明一個無形參的構造器2)調用父類另一個參數不為空的構造器 4.所以建議:創建類時,都創建一個無形參的構造器 5.當有類實例化對象時,Object類的無形參構造器一定會被調用。





免責聲明!

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



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