官术网_书友最值得收藏!

1.2 構(gòu)造方法

構(gòu)造方法是一種特殊的方法,用來在對象實(shí)例化時(shí)初始化對象的成員變量。在Java語言中,構(gòu)造方法具有以下特點(diǎn):

1)構(gòu)造方法必須與類的名字相同,并且不能有返回值(返回值也不能為void)。

2)每個(gè)類可以有多個(gè)構(gòu)造方法。當(dāng)開發(fā)人員沒有提供構(gòu)造方法的時(shí)候,編譯器在把源代碼編譯成字節(jié)碼的過程中會提供一個(gè)默認(rèn)的沒有參數(shù)的構(gòu)造方法,但該構(gòu)造方法不會執(zhí)行任何代碼。如果開發(fā)人員提供了構(gòu)造方法,那么編譯器就不會再創(chuàng)建默認(rèn)的構(gòu)造方法了。

3)構(gòu)造方法可以有0個(gè)、1個(gè)或1個(gè)以上的參數(shù)。

4)構(gòu)造方法總是伴隨著new操作一起調(diào)用,不能由程序的編寫者直接調(diào)用,必須要由系統(tǒng)調(diào)用。構(gòu)造方法在對象實(shí)例化的時(shí)候會被自動調(diào)用,對于一個(gè)對象而言,只會被調(diào)用一次,而普通的方法是在程序執(zhí)行到它的時(shí)候被調(diào)用的,可以被該對象調(diào)用多次。

5)構(gòu)造方法的主要作用是完成對象的初始化工作。

6)構(gòu)造方法不能被繼承,因此就不能被重寫(Override),但是構(gòu)造方法能夠被重載(Overload),可以使用不同的參數(shù)個(gè)數(shù)或參數(shù)類型來定義多個(gè)構(gòu)造方法。

7)子類可以通過super關(guān)鍵字來顯式地調(diào)用父類的構(gòu)造方法,當(dāng)父類沒有提供無參數(shù)的構(gòu)造方法時(shí),子類的構(gòu)造方法中必須顯示地調(diào)用父類的構(gòu)造方法,如果父類中提供了無參數(shù)的構(gòu)造方法,此時(shí)子類的構(gòu)造方法就可以不顯式地調(diào)用父類的構(gòu)造方法,在這種情況下編譯器會默認(rèn)調(diào)用父類的無參數(shù)的構(gòu)造方法。當(dāng)有父類時(shí),在實(shí)例化對象時(shí)會首先執(zhí)行父類的構(gòu)造方法,然后才執(zhí)行子類的構(gòu)造方法。

8)當(dāng)父類和子類都沒有定義構(gòu)造方法的時(shí)候,編譯器會為父類生成一個(gè)默認(rèn)的無參數(shù)的構(gòu)造方法,給子類也生成一個(gè)默認(rèn)的無參數(shù)的構(gòu)造方法。此外,默認(rèn)構(gòu)造器的修飾符只跟當(dāng)前類的修飾符有關(guān)(例如:如果一個(gè)類被定義為public,那么它的構(gòu)造方法也是public)。

引申:普通方法是否可以與構(gòu)造方法有相同的方法名?

答案:可以。如下例所示:

程序運(yùn)行結(jié)果為:

主站蜘蛛池模板: 辽阳市| 桂林市| 崇义县| 城步| 黑水县| 岳阳县| 吉隆县| 余庆县| 陇西县| 黑河市| 浪卡子县| 白沙| 德令哈市| 钟山县| 灵山县| 广饶县| 辽源市| 新源县| 汾西县| 察隅县| 屏南县| 社旗县| 兴城市| 融水| 读书| 阿克陶县| 门源| 和林格尔县| 北京市| 休宁县| 大同市| 胶南市| 镇赉县| 遂平县| 扶风县| 玉环县| 武胜县| 八宿县| 特克斯县| 开原市| 化州市|