java中的構(gòu)造函數(shù)什么時候被調(diào)用執(zhí)行
java構(gòu)造函數(shù)什么時候被調(diào)用執(zhí)行
在java語言 中,構(gòu)造函數(shù)又稱構(gòu)造方法。
特殊性在于,與普通方法的區(qū)別是,他與類名相同,不返回結(jié)果也不加void返回值。
構(gòu)造函數(shù)的作用是初始化對象,即在創(chuàng)建對象時被系統(tǒng)調(diào)用(與普通方法不同,程序不能顯示調(diào)用構(gòu)造函數(shù))。
構(gòu)造函數(shù)還能夠被重載,即可以傳入?yún)?shù),當(dāng)程序中包含有帶參的構(gòu)造函數(shù)時,系統(tǒng)將不會再提供的無參構(gòu)造函數(shù)。
構(gòu)造函數(shù)特點:
沒有函數(shù)返回值,構(gòu)造函數(shù)名與類名相同;當(dāng)創(chuàng)建類對象的時候調(diào)用其對應(yīng)的構(gòu)造方法去創(chuàng)建。
每創(chuàng)建一個類的實例都去初始化它的所有變量是乏味的。
如果一個對象在被創(chuàng)建時就完成了所有的初始工作,將是簡單的和簡潔的。
因此,Java在類里提供了一個特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor)。
一個構(gòu)造函數(shù)是對象被創(chuàng)建時初始對象的成員函數(shù)。
它具有和它所在的類完全一樣的名字。
一旦定義好一個構(gòu)造函數(shù),創(chuàng)建對象時就會自動調(diào)用它。
構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。
這是因為一個類的構(gòu)造函數(shù)的返回值的類型就是這個類本身。
構(gòu)造函數(shù)的任務(wù)是初始化一個對象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個實例后,立刻就會得到一個清楚、可用的對象。
構(gòu)造方法是一種特殊的方法,具有以下特點。
- 構(gòu)造方法的方法名必須與類名相同。
- 構(gòu)造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
- 構(gòu)造方法的主要作用是完成對象的初始化工作,它能夠把定義對象時的參數(shù)傳給對象的域。
- 構(gòu)造方法不能由編程人員調(diào)用,而要系統(tǒng)調(diào)用。
- 一個類可以定義多個構(gòu)造方法,如果在定義類時沒有定義構(gòu)造方法,則編譯系統(tǒng)會自動插入一個無參數(shù)的默認(rèn)構(gòu)造器,這個構(gòu)造器不執(zhí)行任何代碼。
- 構(gòu)造方法可以重載,以參數(shù)的個數(shù),類型,或排列順序區(qū)分。
java構(gòu)造函數(shù)特點
(1)一般函數(shù)是用于定義對象應(yīng)該具備的功能。而構(gòu)造函數(shù)定義的是,對象在調(diào)用功能之前,在建立時,應(yīng)該具備的一些內(nèi)容。也就是對象的初始化內(nèi)容。
(2)構(gòu)造函數(shù)是在對象建立時由jvm調(diào)用, 給對象初始化。一般函數(shù)是對象建立后,當(dāng)對象調(diào)用該功能時才會執(zhí)行。
(3)普通函數(shù)可以使用對象多次調(diào)用,構(gòu)造函數(shù)就在創(chuàng)建對象時調(diào)用。
(4)構(gòu)造函數(shù)的函數(shù)名要與類名一樣,而普通的函數(shù)只要符合標(biāo)識符的命名規(guī)則即可。
(5)構(gòu)造函數(shù)沒有返回值類型。
(6)當(dāng)類中沒有定義構(gòu)造函數(shù)時,系統(tǒng)會指定給該類加上一個空參數(shù)的構(gòu)造函數(shù)。這個是類中默認(rèn)的構(gòu)造函數(shù)。當(dāng)類中如果自定義了構(gòu)造函數(shù),這時默認(rèn)的構(gòu)造函數(shù)就沒有了。備注:可以通過javap命令驗證。
(7)在一個類中可以定義多個構(gòu)造函數(shù),以進(jìn)行不同的初始化。多個構(gòu)造函數(shù)存在于類中,是以重載的形式體現(xiàn)的。因為構(gòu)造函數(shù)的名稱都相同。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java的web開發(fā)中SSH框架的協(xié)作處理應(yīng)用筆記
這篇文章主要介紹了Java的web開發(fā)中SSH框架的協(xié)作處理應(yīng)用筆記,SSH是指Struts和Spring以及Hibernate的框架搭配,需要的朋友可以參考下2015-12-12springboot2.0和springcloud Finchley版項目搭建(包含eureka,gateWay,F(xiàn)re
這篇文章主要介紹了springboot2.0和springcloud Finchley版項目搭建(包含eureka,gateWay,F(xiàn)reign,Hystrix),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05Java中的異常處理(try,catch,finally,throw,throws)
本文主要介紹了Java中的異常處理,文章主要介紹的異常處理包括5個關(guān)鍵字try,catch,finally,throw,throws,更多詳細(xì)內(nèi)容需要的朋友可以參考一下2022-06-06mybatis報錯?resultMapException的解決
這篇文章主要介紹了mybatis報錯?resultMapException的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01Java如何獲取一個隨機數(shù) Java猜數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了Java如何獲取一個隨機數(shù),類似猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03Spring Data JPA開啟批量更新時樂觀鎖失效問題的解決方法
樂觀鎖的基本思想是,認(rèn)為在大多數(shù)情況下,數(shù)據(jù)訪問不會導(dǎo)致沖突,因此,樂觀鎖允許多個事務(wù)同時讀取和修改相同的數(shù)據(jù),而不進(jìn)行顯式的鎖定,本文給大家介紹了Spring Data JPA開啟批量更新時樂觀鎖失效問題的解決方法,需要的朋友可以參考下2024-07-07利用Java查看進(jìn)程內(nèi)存占用情況的實現(xiàn)方法
在系統(tǒng)監(jiān)控和性能調(diào)優(yōu)中,了解各個進(jìn)程的內(nèi)存占用情況是非常重要的一環(huán),通過查看進(jìn)程內(nèi)存使用情況,開發(fā)者和運維人員可以及時發(fā)現(xiàn)異常進(jìn)程、資源瓶頸和內(nèi)存泄漏問題,本項目旨在使用 Java 編寫一個簡單的程序,通過調(diào)用操作系統(tǒng)的命令來獲取系統(tǒng)中各個進(jìn)程的內(nèi)存使用情況2025-03-03