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