java構(gòu)造器 默認(rèn)構(gòu)造方法及參數(shù)化構(gòu)造方法
1、構(gòu)造器
構(gòu)造器也叫構(gòu)造方法、構(gòu)造函數(shù),是一種特殊類(lèi)型的方法,負(fù)責(zé)類(lèi)中成員變量(域)的初始化。構(gòu)造器的用處是在創(chuàng)建對(duì)象時(shí)執(zhí)行初始化,當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)為這個(gè)對(duì)象的實(shí)例進(jìn)行默認(rèn)的初始化。
有兩種類(lèi)型的構(gòu)造方法:
- 1、默認(rèn)構(gòu)造方法(無(wú)參數(shù)構(gòu)造方法)
- 2、參數(shù)化構(gòu)造方法
1.1 權(quán)限修飾符是public
權(quán)限修飾符是public,表示內(nèi)部屬性能被其他類(lèi)訪問(wèn)到。
java默認(rèn)的構(gòu)造方法是無(wú)參的。
Java編譯器會(huì)自動(dòng)創(chuàng)建無(wú)參構(gòu)造函數(shù),因此在類(lèi)中,無(wú)參構(gòu)造即使沒(méi)有,我們也可省略不寫(xiě)。實(shí)例化對(duì)象時(shí)無(wú)需賦值
新建一個(gè)Person類(lèi),再用new實(shí)例化person對(duì)象。運(yùn)行后會(huì)生成一個(gè)Person.class對(duì)象。
public class Demo02 {
public static void main(String[] args) {
//new 實(shí)例化一個(gè)對(duì)象
//一個(gè)類(lèi)就算什么也不寫(xiě),也存在一個(gè)方法,且方法名與類(lèi)名相同。
Person p=new Person();創(chuàng)建對(duì)象,括號(hào)內(nèi)無(wú)需賦值,沒(méi)賦值的情況下,字符類(lèi)型默認(rèn)值為null,數(shù)值類(lèi)型默認(rèn)值為0
}
}
public class Person {
}
若類(lèi)中什么也不寫(xiě),運(yùn)行之后,默認(rèn)多一個(gè)Person()方法,下面是Person.class的代碼:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package Demo01;
public class Person {
public Person() {
}
}
故:一個(gè)類(lèi)就算什么也不寫(xiě),他也會(huì)存在一個(gè)默認(rèn)的方法
參數(shù)化構(gòu)造方法:
- 參數(shù)化構(gòu)造方法用于為不同對(duì)象提供不同初始化的值。
- 倘若類(lèi)中已存在有參構(gòu)造函數(shù),則編譯器不再提供默認(rèn)無(wú)參構(gòu)造。實(shí)例化對(duì)象時(shí)需賦值,不然報(bào)錯(cuò)
1.2 顯示定義構(gòu)造器
package Demo01;
public class Demo02 {
public static void main(String[] args) {
//new 實(shí)例化一個(gè)對(duì)象
//一個(gè)類(lèi)就算什么也不寫(xiě),也存在一個(gè)方法,且方法名與類(lèi)名相同。
Person p=new Person();
System.out.println(p.name);//null
}
}
package Demo01;
public class Person {
String name;
//實(shí)例化初始值
//1、使用new關(guān)鍵字,本質(zhì)實(shí)在構(gòu)造器
//2、用來(lái)初始化值
public Person(){//默認(rèn)構(gòu)造器
this.name="xiaoming";
}
//有參構(gòu)造:一旦定義了有參構(gòu)造,無(wú)參構(gòu)造就必須顯示定義,否則無(wú)效,也是重載
public Person(String name){
this.name=name;
}
//快捷鍵: alt + insert 生成構(gòu)造器,自動(dòng)生成構(gòu)造器,有參無(wú)參可自行選擇。
}
總結(jié):
構(gòu)造器:
- 1、和類(lèi)名相同
- 2、沒(méi)有返回值
作用:
- 1、new 本質(zhì)在調(diào)用構(gòu)造方法
- 2、初始化對(duì)象的值
注意:定義構(gòu)造之后,如果想使用無(wú)參構(gòu)造,顯示的定義一個(gè)無(wú)參構(gòu)造,否則不能使用無(wú)參的構(gòu)造方法ALT + INSERT 生成構(gòu)造器
到此這篇關(guān)于java構(gòu)造器 默認(rèn)構(gòu)造方法及參數(shù)化構(gòu)造方法的文章就介紹到這了,更多相關(guān)java構(gòu)造器 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
FeignClient中name和url屬性的作用說(shuō)明
這篇文章主要介紹了FeignClient中name和url屬性的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
SpringMVC4.3?HandlerExceptionResolver異常處理源碼解析
這篇文章主要為大家介紹了SpringMVC4.3?HandlerExceptionResolver異常處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-09-09
SpringBoot整合RabbitMQ, 實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者的功能
這篇文章主要介紹了SpringBoot整合RabbitMQ, 實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者的功能,幫助大家更好得理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03
idea中springboot項(xiàng)目連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)的原因解析
這篇文章主要介紹了idea中springboot項(xiàng)目連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)的原因解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
通過(guò)String.intern()方法淺談堆中常量池
這篇文章主要介紹了通過(guò)String.intern()方法淺談堆中常量池,在JDK7之前,字符串常量是存在永久帶Perm 區(qū)的,JDK7開(kāi)始在將常量池遷移到堆中,這個(gè)變化也導(dǎo)致了String的新特性,下面我們慢慢進(jìn)行介紹。,需要的朋友可以參考下2019-06-06
通過(guò)實(shí)例解析Spring Ioc項(xiàng)目實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Spring Ioc項(xiàng)目實(shí)踐過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Java并發(fā)編程示例(八):處理線(xiàn)程的非受檢異常
這篇文章主要介紹了Java并發(fā)編程示例(八):處理線(xiàn)程的非受檢異常,Java為我們提供了一種機(jī)制,專(zhuān)門(mén)用于處理由Thread對(duì)象拋出的非受檢異常,以避免程序的退出,需要的朋友可以參考下2014-12-12

