子類怎么調(diào)用父類的構(gòu)造方法 為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?
為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?子類會執(zhí)行父類構(gòu)造函數(shù)的方法么?在Java中,在構(gòu)建子類的過程中,必須調(diào)用其父類的構(gòu)造函數(shù),這樣子類對象比父類對象大,子類對象包含父類的對象,這就是內(nèi)存中的真
為什么子類的構(gòu)造方法要調(diào)用父類的構(gòu)造方法?
子類會執(zhí)行父類構(gòu)造函數(shù)的方法么?
在Java中,在構(gòu)建子類的過程中,必須調(diào)用其父類的構(gòu)造函數(shù),這樣子類對象比父類對象大,子類對象包含父類的對象,這就是內(nèi)存中的真實情況。當構(gòu)造方法要創(chuàng)建新對象時,它必須調(diào)用該方法。這是一個規(guī)則,如果你想創(chuàng)建一個新的父類對象,你必須調(diào)用它的構(gòu)造方法,所以第一個規(guī)則:子類構(gòu)造在制造過程中,我們必須調(diào)用它的父類的構(gòu)造函數(shù)。如果我們不編寫構(gòu)造函數(shù),編譯器將為我們添加一個默認構(gòu)造函數(shù)。默認構(gòu)造函數(shù)是沒有參數(shù)的構(gòu)造函數(shù)。但是,如果您自己編寫構(gòu)造函數(shù),編譯器將不會向您添加它。所以有時候新建一個子類對象時,肯定會調(diào)用子類的構(gòu)造方法,但是在子類構(gòu)造方法中,我們不調(diào)用基類的構(gòu)造方法,基類的構(gòu)造方法是沒有寫的,比如super()這是不對的,但第二條規(guī)則是,如果子類的構(gòu)造函數(shù)沒有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則系統(tǒng)將默認不帶參數(shù)地調(diào)用基類的構(gòu)造函數(shù)。注意:如果子類的構(gòu)造函數(shù)沒有顯示調(diào)用基類構(gòu)造函數(shù)的方法,而基類的構(gòu)造函數(shù)沒有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則會發(fā)生編譯錯誤。因此,我們通常需要顯示:Super(parameter list),調(diào)用父類有一個參數(shù)構(gòu)造函數(shù)。看我的屏幕,聽我的演講!