java構(gòu)造函數(shù)的三種類(lèi)型總結(jié)
我們說(shuō)構(gòu)造函數(shù)能處理參數(shù)的問(wèn)題,但其實(shí)也要分三種情況進(jìn)行討論。目前有三種類(lèi)型:無(wú)參、有參和默認(rèn)。根據(jù)不同的參數(shù)情況,需要我們分別進(jìn)行構(gòu)造函數(shù)的討論。這里重點(diǎn)是無(wú)參構(gòu)造函數(shù)的初始化也要分兩種方法進(jìn)行分析。下面我們就這三種不同的構(gòu)造函數(shù)類(lèi)型分別為大家進(jìn)行展示。
1.無(wú)參構(gòu)造函數(shù)
不帶入?yún)⒌臉?gòu)造函數(shù)叫無(wú)參構(gòu)造函數(shù),對(duì)類(lèi)的成員初始化有兩種方法:
(1)在類(lèi)成員變量聲明時(shí)進(jìn)行初始化
public class MyClass { private String name = "Jerry"; private int id = 1; public MyClass() { } }
(2)在無(wú)參構(gòu)造函數(shù)的方法體里對(duì)類(lèi)成員變量初始化
public class MyClass { private String name; private int id; public MyClass() { this.name = "Jerry"; this.id = 1; } }
2.有參構(gòu)造函數(shù)
帶入?yún)⒌臉?gòu)造函數(shù)叫有參構(gòu)造函數(shù)。
public class Employee { int empId; String empName; //parameterized constructor with two parameters Employee(int id, String name){ this.empId = id; this.empName = name; } void info(){ System.out.println("Id: "+empId+" Name: "+empName); } public static void main(String args[]){ Employee obj1 = new Employee(10245,"Chaitanya"); Employee obj2 = new Employee(92232,"Negan"); obj1.info(); obj2.info(); } }
輸出:
Id: 10245 Name: Chaitanya Id: 92232 Name: Negan
當(dāng)類(lèi)里沒(méi)有顯式地定義代碼來(lái)實(shí)現(xiàn)任何構(gòu)造函數(shù)時(shí),Java編譯器將會(huì)在編譯的字節(jié)碼(.class文件)里面為這個(gè)類(lèi)插入默認(rèn)構(gòu)造函數(shù)。由于是在編譯階段插入,因此在源文件(.java)里是不會(huì)找到默認(rèn)構(gòu)造函數(shù)的代碼的。
3.默認(rèn)構(gòu)造函數(shù)
默認(rèn)構(gòu)造函數(shù)形式上類(lèi)似無(wú)參構(gòu)造函數(shù)(都沒(méi)有入?yún)ⅲ?,但是二者并不能劃等?hào),區(qū)別如下:
默認(rèn)構(gòu)造函數(shù)方法體為空,無(wú)參構(gòu)造函數(shù)方法體可以為空也可以不為空;
只要類(lèi)里顯式的創(chuàng)建了一個(gè)構(gòu)造函數(shù),比如一個(gè)無(wú)參構(gòu)造函數(shù),編譯器都不會(huì)再為這個(gè)類(lèi)創(chuàng)建默認(rèn)構(gòu)造函數(shù)了。
到此這篇關(guān)于java構(gòu)造函數(shù)的三種類(lèi)型總結(jié)的文章就介紹到這了,更多相關(guān)java構(gòu)造函數(shù)的類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC源碼解讀之HandlerMapping - AbstractUrlHandlerMapping系列re
這篇文章主要介紹了SpringMVC源碼解讀之HandlerMapping - AbstractUrlHandlerMapping系列request分發(fā) 的相關(guān)資料,需要的朋友可以參考下2016-02-02springboot默認(rèn)文件緩存(easy-captcha?驗(yàn)證碼)
這篇文章主要介紹了springboot的文件緩存(easy-captcha?驗(yàn)證碼),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn)
這篇文章主要介紹了使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java的Struts框架中<results>標(biāo)簽的使用方法
這篇文章主要介紹了Java的Struts框架中<results>標(biāo)簽的使用方法,Struts框架是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-11-11MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01IDEA 錯(cuò)誤之找不到或無(wú)法加載主類(lèi)的問(wèn)題
這篇文章主要介紹了IDEA 錯(cuò)誤之找不到或無(wú)法加載主類(lèi),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08使用jpa之動(dòng)態(tài)插入與修改(重寫(xiě)save)
這篇文章主要介紹了使用jpa之動(dòng)態(tài)插入與修改(重寫(xiě)save),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11