摘要:一構(gòu)造器構(gòu)造器的作用是構(gòu)造并初始化實(shí)例對(duì)象。在的每個(gè)類中,至少要有一個(gè)構(gòu)造器,沒(méi)有定義的話,編譯器將自動(dòng)插入缺省的構(gòu)造器。一般把構(gòu)造器設(shè)置為訪問(wèn)權(quán)限,設(shè)置為是為了阻止其他類創(chuàng)建該類的實(shí)例。
一. 構(gòu)造器
構(gòu)造器的作用是構(gòu)造并初始化實(shí)例對(duì)象。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)為這個(gè)對(duì)象的屬性進(jìn)行初始化。
二. 語(yǔ)法class 類名 { 變量聲明; 類的名稱(參數(shù)列表) { 方法體 } }
構(gòu)造器和類要有相同的名字,同時(shí)避免在構(gòu)造器中定義與實(shí)例域重名的局部變量。例如
class student { private String name; private int studentID; //構(gòu)造器 public student(String n,int m){ name=n; studentID=m; /*定義與實(shí)例域重名的局部變量 *這種錯(cuò)誤很難被發(fā)現(xiàn) String name=n; int studentID=m; */ } }三. 特點(diǎn)
構(gòu)造器和類具有相同的名字
一個(gè)類可以有多個(gè)構(gòu)造器
構(gòu)造器可以有0、1或多個(gè)參數(shù)
構(gòu)造器沒(méi)有返回值和返回類型
構(gòu)造器不能被顯示調(diào)用,總是與new運(yùn)算符儀器被調(diào)用,在創(chuàng)建一個(gè)類的新隊(duì)形的同時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造器為新對(duì)象初始化。
在java的每個(gè)類中,至少要有一個(gè)構(gòu)造器,沒(méi)有定義的話,編譯器將自動(dòng)插入缺省的構(gòu)造器。
這種默認(rèn)初始化被所有數(shù)值類型設(shè)為0,布爾值為false,所有引用類型的屬性設(shè)置為null
如果類中提供了至少一個(gè)構(gòu)造器,但是沒(méi)有提供無(wú)參數(shù)的構(gòu)造器,構(gòu)造對(duì)象沒(méi)有提供參數(shù)就會(huì)被視為不合法。
class student { private String name; private int studentID; //構(gòu)造器 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } } student=new student(); //產(chǎn)生錯(cuò)誤
解決方法:可以為java類保留無(wú)參數(shù)的構(gòu)造器,為一個(gè)類編寫了有參數(shù)的構(gòu)造器,同時(shí)建議為該類編寫一個(gè)無(wú)參數(shù)的構(gòu)造器。一般把構(gòu)造器設(shè)置為public訪問(wèn)權(quán)限,設(shè)置為private是為了阻止其他類創(chuàng)建該類的實(shí)例。
四.構(gòu)造器重載和調(diào)用 1.方法簽名一個(gè)方法的簽名包括方法名、參數(shù)類型和個(gè)數(shù),但不包括返回值。
類的定義中存在兩個(gè)或兩個(gè)以上的同名成員方法,為了使編譯器能區(qū)分同名的成員方法,使同名方法的參數(shù)個(gè)數(shù)或參數(shù)的數(shù)據(jù)類型不同,從而使編譯器能夠挑選具體執(zhí)行某個(gè)方法。
class student { private String name; private String major; private String school; private int studentID; //構(gòu)造器1 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } //構(gòu)造器2 public student(String school){ this.school=school; } //構(gòu)造器3 public student(String major,int studentID){ this.major=name; this.studentID=studentID; } }2.調(diào)用另一個(gè)構(gòu)造器
class student { private String name; private String major; private String school; private int studentID; //構(gòu)造器1 public student(String name,int studentID){ this("大山高中") //調(diào)用另一個(gè)構(gòu)造器 this.name=name; this.studentID=studentID; } //構(gòu)造器2 public student(String school){ this.school=school; }3.顯式調(diào)用父類構(gòu)造器
當(dāng)我們想調(diào)用超類的的某個(gè)方法,但是當(dāng)前類也有相同的方法,這時(shí)可以使用super關(guān)鍵字(只是一個(gè)指示編譯器調(diào)用超類方法的特殊關(guān)鍵字)。
class A{ public A(){ System.out.print("A"); } } class B extends A{ public B(){ super();//調(diào)用父類構(gòu)造方法,打印A System.out.print("B"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65051.html
摘要:類用于描述客觀世界里某一類對(duì)象的共同特征,而對(duì)象則是類的具體的存在,程序使用類的構(gòu)造器來(lái)創(chuàng)建該類的對(duì)象。也支持面向?qū)ο蟮娜筇卣鞣庋b繼承和多態(tài)。構(gòu)造器用于對(duì)類實(shí)例進(jìn)行初始化操作,構(gòu)造器支持重載。 Java是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,Java語(yǔ)言提供了定義類、成員變量、方法等最基本的功能。類可被認(rèn)為是一種自定義的數(shù)據(jù)類型,可以使用類來(lái)定義變量。類用于描述客觀世界里某一類對(duì)象的共同特征,而對(duì)...
摘要:多個(gè)構(gòu)造器的名字相同,但形參列表不同。但一旦使用關(guān)鍵字來(lái)調(diào)用構(gòu)造器,將會(huì)導(dǎo)致系統(tǒng)重新創(chuàng)建一個(gè)對(duì)象。此時(shí)可以通過(guò)關(guān)鍵字調(diào)用相應(yīng)的構(gòu)造器。 構(gòu)造器是創(chuàng)建對(duì)象的重要途徑(即使使用工廠模式、反射等方式創(chuàng)建對(duì)象,其實(shí)質(zhì)依然是依賴于構(gòu)造器),因此,Java類必須包含一個(gè)或一個(gè)以上的構(gòu)造器。 使用構(gòu)造器執(zhí)行初始化 構(gòu)造器最大的用處就是在創(chuàng)建對(duì)象時(shí)執(zhí)行初始化。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)為這個(gè)對(duì)象的實(shí)例變量...
摘要:上一篇小樂(lè)介紹了新特性函數(shù)式接口,大家可以點(diǎn)擊回顧。中引入方法引用新特性用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,方法引用是用來(lái)直接訪問(wèn)類或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用是一種更簡(jiǎn)潔易懂的表達(dá)式。 上一篇小樂(lè)介紹了《Java8新特性-函數(shù)式接口》,大家可以點(diǎn)擊回顧。這篇文章將接著介紹Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,?方法引用是...
摘要:注本文首發(fā)于公眾號(hào),可長(zhǎng)按或掃描下面的小心心來(lái)訂閱關(guān)于構(gòu)造器與初始化無(wú)參構(gòu)造器默認(rèn)構(gòu)造器自己未寫編譯器幫忙自動(dòng)創(chuàng)建的若自行定義了構(gòu)造器無(wú)論參數(shù)有否,編譯器便停止默認(rèn)創(chuàng)建動(dòng)作類里的對(duì)象引用默認(rèn)初始化為,基本類型初始化為構(gòu)造器也是類的靜態(tài)方法四 showImg(https://segmentfault.com/img/remote/1460000015723687); 注: 本文首發(fā)于 ...
摘要:的動(dòng)態(tài)性反射機(jī)制動(dòng)態(tài)編譯動(dòng)態(tài)執(zhí)行代碼動(dòng)態(tài)字節(jié)碼操作動(dòng)態(tài)語(yǔ)言程序運(yùn)行時(shí)可以改變程序得結(jié)構(gòu)或變量類型典型語(yǔ)言等如下代碼不是動(dòng)態(tài)語(yǔ)言但有一定的動(dòng)態(tài)性我們可以利用反射機(jī)制字節(jié)碼操作獲得類似動(dòng)態(tài)語(yǔ)言的特性的動(dòng)態(tài)性讓編程的時(shí)候更加靈活反射機(jī)制反射機(jī)制指 1.Java的動(dòng)態(tài)性 反射機(jī)制 動(dòng)態(tài)編譯 動(dòng)態(tài)執(zhí)行JavaScript代碼 動(dòng)態(tài)字節(jié)碼操作 2.動(dòng)態(tài)語(yǔ)言 程序運(yùn)行時(shí),可以改變程序得結(jié)構(gòu)或變量...
閱讀 1825·2021-11-24 10:21
閱讀 1236·2021-09-22 15:25
閱讀 3191·2019-08-30 15:55
閱讀 739·2019-08-30 15:54
閱讀 3496·2019-08-30 14:20
閱讀 1684·2019-08-30 14:06
閱讀 660·2019-08-30 13:11
閱讀 3177·2019-08-29 16:43