java中的構(gòu)造函數(shù)什么時(shí)候被調(diào)用執(zhí)行
java構(gòu)造函數(shù)什么時(shí)候被調(diào)用執(zhí)行
在java語言 中,構(gòu)造函數(shù)又稱構(gòu)造方法。
特殊性在于,與普通方法的區(qū)別是,他與類名相同,不返回結(jié)果也不加void返回值。
構(gòu)造函數(shù)的作用是初始化對(duì)象,即在創(chuàng)建對(duì)象時(shí)被系統(tǒng)調(diào)用(與普通方法不同,程序不能顯示調(diào)用構(gòu)造函數(shù))。
構(gòu)造函數(shù)還能夠被重載,即可以傳入?yún)?shù),當(dāng)程序中包含有帶參的構(gòu)造函數(shù)時(shí),系統(tǒng)將不會(huì)再提供的無參構(gòu)造函數(shù)。
構(gòu)造函數(shù)特點(diǎn):
沒有函數(shù)返回值,構(gòu)造函數(shù)名與類名相同;當(dāng)創(chuàng)建類對(duì)象的時(shí)候調(diào)用其對(duì)應(yīng)的構(gòu)造方法去創(chuàng)建。
每創(chuàng)建一個(gè)類的實(shí)例都去初始化它的所有變量是乏味的。
如果一個(gè)對(duì)象在被創(chuàng)建時(shí)就完成了所有的初始工作,將是簡(jiǎn)單的和簡(jiǎn)潔的。
因此,Java在類里提供了一個(gè)特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor)。
一個(gè)構(gòu)造函數(shù)是對(duì)象被創(chuàng)建時(shí)初始對(duì)象的成員函數(shù)。
它具有和它所在的類完全一樣的名字。
一旦定義好一個(gè)構(gòu)造函數(shù),創(chuàng)建對(duì)象時(shí)就會(huì)自動(dòng)調(diào)用它。
構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。
這是因?yàn)橐粋€(gè)類的構(gòu)造函數(shù)的返回值的類型就是這個(gè)類本身。
構(gòu)造函數(shù)的任務(wù)是初始化一個(gè)對(duì)象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個(gè)實(shí)例后,立刻就會(huì)得到一個(gè)清楚、可用的對(duì)象。
構(gòu)造方法是一種特殊的方法,具有以下特點(diǎn)。
- 構(gòu)造方法的方法名必須與類名相同。
- 構(gòu)造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
- 構(gòu)造方法的主要作用是完成對(duì)象的初始化工作,它能夠把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的域。
- 構(gòu)造方法不能由編程人員調(diào)用,而要系統(tǒng)調(diào)用。
- 一個(gè)類可以定義多個(gè)構(gòu)造方法,如果在定義類時(shí)沒有定義構(gòu)造方法,則編譯系統(tǒng)會(huì)自動(dòng)插入一個(gè)無參數(shù)的默認(rèn)構(gòu)造器,這個(gè)構(gòu)造器不執(zhí)行任何代碼。
- 構(gòu)造方法可以重載,以參數(shù)的個(gè)數(shù),類型,或排列順序區(qū)分。
java構(gòu)造函數(shù)特點(diǎn)
(1)一般函數(shù)是用于定義對(duì)象應(yīng)該具備的功能。而構(gòu)造函數(shù)定義的是,對(duì)象在調(diào)用功能之前,在建立時(shí),應(yīng)該具備的一些內(nèi)容。也就是對(duì)象的初始化內(nèi)容。
(2)構(gòu)造函數(shù)是在對(duì)象建立時(shí)由jvm調(diào)用, 給對(duì)象初始化。一般函數(shù)是對(duì)象建立后,當(dāng)對(duì)象調(diào)用該功能時(shí)才會(huì)執(zhí)行。
(3)普通函數(shù)可以使用對(duì)象多次調(diào)用,構(gòu)造函數(shù)就在創(chuàng)建對(duì)象時(shí)調(diào)用。
(4)構(gòu)造函數(shù)的函數(shù)名要與類名一樣,而普通的函數(shù)只要符合標(biāo)識(shí)符的命名規(guī)則即可。
(5)構(gòu)造函數(shù)沒有返回值類型。
(6)當(dāng)類中沒有定義構(gòu)造函數(shù)時(shí),系統(tǒng)會(huì)指定給該類加上一個(gè)空參數(shù)的構(gòu)造函數(shù)。這個(gè)是類中默認(rèn)的構(gòu)造函數(shù)。當(dāng)類中如果自定義了構(gòu)造函數(shù),這時(shí)默認(rèn)的構(gòu)造函數(shù)就沒有了。備注:可以通過javap命令驗(yàn)證。
(7)在一個(gè)類中可以定義多個(gè)構(gòu)造函數(shù),以進(jìn)行不同的初始化。多個(gè)構(gòu)造函數(shù)存在于類中,是以重載的形式體現(xiàn)的。因?yàn)闃?gòu)造函數(shù)的名稱都相同。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring注解@EnableWebMvc使用的坑點(diǎn)及解析
這篇文章主要介紹了Spring注解@EnableWebMvc使用的坑點(diǎn)及解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot2.6.x升級(jí)后循環(huán)依賴及Swagger無法使用問題
這篇文章主要為大家介紹了SpringBoot2.6.x升級(jí)后循環(huán)依賴及Swagger無法使用問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作
這篇文章主要介紹了spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
java-SSH2實(shí)現(xiàn)數(shù)據(jù)庫和界面的分頁
本文主要是介紹SSH2實(shí)現(xiàn)數(shù)據(jù)庫和界面的分頁的代碼,分頁在web應(yīng)用中是經(jīng)常要做的事情,實(shí)用性比較大,有需要的朋友可以來了解一下。2016-10-10
java動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理示例分享
這篇文章主要介紹了java動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理示例,JDK1.3之后,Java提供了動(dòng)態(tài)代理的技術(shù),允許開發(fā)者在運(yùn)行期間創(chuàng)建接口的代理實(shí)例,下面我們使用示例學(xué)習(xí)一下2014-03-03
Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢
這篇文章主要介紹了Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Windows系統(tǒng)下修改jar包中的依賴實(shí)現(xiàn)過程
本文介紹了如何在Windows下修改和升級(jí)Java項(xiàng)目中的JAR包依賴,首先,通過解壓原JAR包并替換指定的依賴JAR文件來實(shí)現(xiàn)升級(jí),然后,使用命令重新打包JAR文件,整個(gè)過程包括解壓、替換和打包三個(gè)步驟,確保項(xiàng)目能夠正確引用更新的依賴2025-12-12
SpringBoot項(xiàng)目docker容器部署實(shí)現(xiàn)
本文主要介紹了SpringBoot項(xiàng)目docker容器部署實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03

