您好,歡迎來到賦能網(wǎng)!

java構(gòu)造函數(shù)可以拋出異常嗎?java構(gòu)造函數(shù)有什么特點?

賦能網(wǎng) 2023-05-09 67

構(gòu)造函數(shù)是一種特殊的方法。主要用來在創(chuàng)建對象時初始化對象,也就是為對象成員變量賦初始值,那java構(gòu)造函數(shù)可以拋出異常嗎?下面來我們就來給大家講解一下。

是的,構(gòu)造函數(shù)可以拋出異常。通常這意味著新對象立即有資格進行垃圾收集(當然,它可能在一段時間內(nèi)不會被收集)。如果它在構(gòu)造函數(shù)中早先可見(例如,通過指定靜態(tài)字段或?qū)⑵渥陨硖砑拥郊现?,那么“半構(gòu)造”對象可能會留下來。關(guān)于在構(gòu)造函數(shù)中拋出異常要注意的一件事:因為調(diào)用者(通常)無法使用新對象,構(gòu)造函數(shù)應(yīng)該小心避免獲取非托管資源(文件句柄等)然后拋出異常沒有釋放它們。

例如,如果構(gòu)造函數(shù)嘗試打開a FileInputStream和a FileOutputStream,并且第一個成功但第二個失敗,則應(yīng)嘗試關(guān)閉第一個流。如果它是拋出異常的子類構(gòu)造函數(shù),這會變得更難,當然這一切都變得有點棘手。這不是經(jīng)常出現(xiàn)的問題,但值得考慮。

java構(gòu)造函數(shù)有什么特點?

1. 構(gòu)造函數(shù)的主要作用是完成對象的初始化工作,(如果寫的類里面沒有構(gòu)造函數(shù),那么編譯器會默認加上一個無參數(shù)且方法體為空的構(gòu)造函數(shù)).它能夠把定義對象時的參數(shù)傳給對象的域。意即當創(chuàng)建一個對象時,這個對象就被初始化.如果這時構(gòu)造函數(shù)不為空,則會在創(chuàng)建對象時就執(zhí)行構(gòu)造函數(shù)里面的代碼:

2. 構(gòu)造函數(shù)的名稱必須與類名相同,包括大小寫;

3. 構(gòu)造函數(shù)沒有返回值,也不能用void修飾. 如果不小心給構(gòu)造函數(shù)前面添加了返回值類型,那么這將使這個構(gòu)造函數(shù)變成一個普通的方法,在運行時將產(chǎn)生找不到構(gòu)造方法的錯誤。

4. 一個類可以定義多個構(gòu)造方法,如果在定義類時沒有定義構(gòu)造方法,則編譯系統(tǒng)會自動插入一個無參數(shù)的默認構(gòu)造器,這個構(gòu)造器不執(zhí)行任何代碼。

5. 構(gòu)造方法可以重載,以參數(shù)的個數(shù),類型,順序。

構(gòu)造函數(shù)可以用來生成并初始化對象,可以通過函數(shù)的重寫給對象賦初始值,簡化代碼,最后大家如果想要了解更多初識java知識,敬請關(guān)注賦能網(wǎng)。


本文鏈接:

本文章“java構(gòu)造函數(shù)可以拋出異常嗎?java構(gòu)造函數(shù)有什么特點?”已幫助 67 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細解答:
咨詢熱線:4008-569-579

如果本頁不是您要找的課程,您也可以百度查找一下: