java中構(gòu)造函數(shù)何時(shí)被調(diào)用 在java語(yǔ)言里如何在子類中調(diào)用父類的有參構(gòu)造函數(shù)?
如果要在子類的構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù),則需要使用子類構(gòu)造函數(shù)第一行的super(參數(shù)列表)方法(注釋異常除外)。此參數(shù)列表與父類聲明的參數(shù)列表表一致。如果不調(diào)用子類構(gòu)造函數(shù),則不能直接調(diào)用父類。函
如果要在子類的構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù),則需要使用子類構(gòu)造函數(shù)第一行的super(參數(shù)列表)方法(注釋異常除外)。此參數(shù)列表與父類聲明的參數(shù)列表表一致。如果不調(diào)用子類構(gòu)造函數(shù),則不能直接調(diào)用父類。函數(shù),然后創(chuàng)建父類對(duì)象(由要調(diào)用的參數(shù)化父類構(gòu)造函數(shù)創(chuàng)建),該對(duì)象間接調(diào)用構(gòu)造函數(shù)。
在java語(yǔ)言里如何在子類中調(diào)用父類的有參構(gòu)造函數(shù)?
在Java中,在構(gòu)建子類的過(guò)程中,必須調(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)造在制造過(guò)程中,我們必須調(diào)用它的父類的構(gòu)造函數(shù)。如果我們不編寫(xiě)構(gòu)造函數(shù),編譯器將為我們添加一個(gè)默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是沒(méi)有參數(shù)的構(gòu)造函數(shù)。但是,如果您自己編寫(xiě)構(gòu)造函數(shù),編譯器將不會(huì)向您添加它。所以有時(shí)候新建一個(gè)子類對(duì)象時(shí),肯定會(huì)調(diào)用子類的構(gòu)造方法,但是在子類構(gòu)造方法中,我們不調(diào)用基類的構(gòu)造方法,基類的構(gòu)造方法是沒(méi)有寫(xiě)的,比如super()這是不對(duì)的,但第二條規(guī)則是,如果子類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則系統(tǒng)將默認(rèn)不帶參數(shù)地調(diào)用基類的構(gòu)造函數(shù)。注意:如果子類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,而基類的構(gòu)造函數(shù)沒(méi)有顯示調(diào)用基類構(gòu)造函數(shù)的方法,則會(huì)發(fā)生編譯錯(cuò)誤。因此,我們通常需要顯示:Super(parameter list),調(diào)用父類有一個(gè)參數(shù)構(gòu)造函數(shù)??次业钠聊?,聽(tīng)我的演講!