構(gòu)造函數(shù)是一種特殊的方法。主要用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象,也就是為對(duì)象成員變量賦初始值,那java構(gòu)造函數(shù)可以拋出異常嗎?下面來我們就來給大家講解一下。
是的,構(gòu)造函數(shù)可以拋出異常。通常這意味著新對(duì)象立即有資格進(jìn)行垃圾收集(當(dāng)然,它可能在一段時(shí)間內(nèi)不會(huì)被收集)。如果它在構(gòu)造函數(shù)中早先可見(例如,通過指定靜態(tài)字段或?qū)⑵渥陨硖砑拥郊现?,那么“半構(gòu)造”對(duì)象可能會(huì)留下來。關(guān)于在構(gòu)造函數(shù)中拋出異常要注意的一件事:因?yàn)檎{(diào)用者(通常)無法使用新對(duì)象,構(gòu)造函數(shù)應(yīng)該小心避免獲取非托管資源(文件句柄等)然后拋出異常沒有釋放它們。
例如,如果構(gòu)造函數(shù)嘗試打開a FileInputStream和a FileOutputStream,并且第一個(gè)成功但第二個(gè)失敗,則應(yīng)嘗試關(guān)閉第一個(gè)流。如果它是拋出異常的子類構(gòu)造函數(shù),這會(huì)變得更難,當(dāng)然這一切都變得有點(diǎn)棘手。這不是經(jīng)常出現(xiàn)的問題,但值得考慮。
java構(gòu)造函數(shù)有什么特點(diǎn)?
1. 構(gòu)造函數(shù)的主要作用是完成對(duì)象的初始化工作,(如果寫的類里面沒有構(gòu)造函數(shù),那么編譯器會(huì)默認(rèn)加上一個(gè)無參數(shù)且方法體為空的構(gòu)造函數(shù)).它能夠把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的域。意即當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象就被初始化.如果這時(shí)構(gòu)造函數(shù)不為空,則會(huì)在創(chuàng)建對(duì)象時(shí)就執(zhí)行構(gòu)造函數(shù)里面的代碼:
2. 構(gòu)造函數(shù)的名稱必須與類名相同,包括大小寫;
3. 構(gòu)造函數(shù)沒有返回值,也不能用void修飾. 如果不小心給構(gòu)造函數(shù)前面添加了返回值類型,那么這將使這個(gè)構(gòu)造函數(shù)變成一個(gè)普通的方法,在運(yùn)行時(shí)將產(chǎn)生找不到構(gòu)造方法的錯(cuò)誤。
4. 一個(gè)類可以定義多個(gè)構(gòu)造方法,如果在定義類時(shí)沒有定義構(gòu)造方法,則編譯系統(tǒng)會(huì)自動(dòng)插入一個(gè)無參數(shù)的默認(rèn)構(gòu)造器,這個(gè)構(gòu)造器不執(zhí)行任何代碼。
5. 構(gòu)造方法可以重載,以參數(shù)的個(gè)數(shù),類型,順序。
構(gòu)造函數(shù)可以用來生成并初始化對(duì)象,可以通過函數(shù)的重寫給對(duì)象賦初始值,簡化代碼,最后大家如果想要了解更多初識(shí)java知識(shí),敬請(qǐng)關(guān)注賦能網(wǎng)。
本文鏈接:
本文章“java構(gòu)造函數(shù)可以拋出異常嗎?java構(gòu)造函數(shù)有什么特點(diǎn)?”已幫助 67 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579