- Java程序員面試筆試寶典(第2版)
- 何昊等編著
- 763字
- 2022-06-17 16:00:40
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é)果為:

- Learning Single:page Web Application Development
- Python程序設(shè)計(jì)教程(第2版)
- 微服務(wù)與事件驅(qū)動架構(gòu)
- Python編程完全入門教程
- PLC編程與調(diào)試技術(shù)(松下系列)
- Learning Python Design Patterns
- Java EE 7 Performance Tuning and Optimization
- Procedural Content Generation for C++ Game Development
- Swift 4從零到精通iOS開發(fā)
- Visual C#.NET Web應(yīng)用程序設(shè)計(jì)
- OpenCV 3 Blueprints
- DevOps 精要:業(yè)務(wù)視角
- JSP應(yīng)用與開發(fā)技術(shù)(第3版)
- 趣味掌控板編程
- Java項(xiàng)目驅(qū)動開發(fā)教程