Java中構(gòu)造函數(shù)是一種特殊的函數(shù),用來(lái)在對(duì)象實(shí)例化時(shí)初始化對(duì)象的成員變量循集。在Java語(yǔ)言中,構(gòu)造函數(shù)具有以下幾個(gè)特點(diǎn):
- 構(gòu)造函數(shù)必須與類名相同猿妈,并且不能有返回值(返回值是void也不行);
- 每個(gè)類可以有多個(gè)構(gòu)造函數(shù)泣洞。當(dāng)開(kāi)發(fā)人員沒(méi)有提供構(gòu)造函數(shù)時(shí)席舍,編譯器在把源代碼編譯成字節(jié)碼的過(guò)程中會(huì)提供一個(gè)沒(méi)有參數(shù)默認(rèn)的構(gòu)造方法勒魔,但該構(gòu)造函數(shù)不會(huì)執(zhí)行任何代碼践图,如果開(kāi)發(fā)人員提供了構(gòu)造函數(shù)掺冠,那么編譯器就不會(huì)再創(chuàng)建默認(rèn)的構(gòu)造函數(shù);
- 構(gòu)造函數(shù)可以任意個(gè)參數(shù)码党;
- 構(gòu)造函數(shù)總是伴隨著new操作儀器調(diào)用德崭,且不能由程序的編寫(xiě)者直接調(diào)用斥黑,必須要由系統(tǒng)調(diào)用。構(gòu)造函數(shù)在對(duì)象實(shí)例化的時(shí)候回被自動(dòng)調(diào)用眉厨,且只運(yùn)行一次锌奴,而普通的方法是在程序執(zhí)行到它的時(shí)候被調(diào)用,且可以被對(duì)象調(diào)用多次憾股;
- 構(gòu)造函數(shù)的主要工作是完成對(duì)象的初始化操作鹿蜀;
- 構(gòu)造函數(shù)不能被繼承,因此它不能被覆蓋服球,但是構(gòu)造函數(shù)能夠被重載耻姥,可以使用不同的參數(shù)格式或者參數(shù)類型來(lái)定義多個(gè)構(gòu)造函數(shù);
- 子類可以通過(guò)super關(guān)鍵字來(lái)顯式調(diào)用父類的構(gòu)造函數(shù)有咨,當(dāng)父類沒(méi)有提供無(wú)參數(shù)的構(gòu)造函數(shù)時(shí),子類的構(gòu)造函數(shù)中必須顯示地調(diào)用父類的構(gòu)造函數(shù)蒸健。如果父類提供了無(wú)參數(shù)的構(gòu)造函數(shù)座享,此時(shí)子類的構(gòu)造函數(shù)就可以不顯式地調(diào)用父類的構(gòu)造函數(shù),在這種情況下編譯器會(huì)默認(rèn)調(diào)用父類提供的無(wú)參構(gòu)造函數(shù)似忧。當(dāng)有父類時(shí)渣叛,在實(shí)例化對(duì)象時(shí)會(huì)執(zhí)行性父類的構(gòu)造函數(shù),然后執(zhí)行子類的構(gòu)造函數(shù)盯捌;
- 當(dāng)父類和子類都沒(méi)有定義構(gòu)造函數(shù)時(shí)淳衙,編譯器會(huì)為父類生成一個(gè)默認(rèn)的無(wú)參構(gòu)造函數(shù),給子類也生成一個(gè)無(wú)參構(gòu)造函數(shù)饺著。此外箫攀,默認(rèn)構(gòu)造器的修飾符只跟當(dāng)前類的修飾符有關(guān)(例如,如果一個(gè)類被定義為public幼衰,那么它的構(gòu)造函數(shù)也是public)靴跛;
舉例
<code>
public class Test{
//無(wú)參類型構(gòu)造函數(shù)
public Test(){
}
//帶參類型構(gòu)造函數(shù)
public Test(String arg){
}
//類方法
public void Test(){
}
}
</code>