一憎亚、?構(gòu)造器(構(gòu)造方法|構(gòu)造函數(shù))
在創(chuàng)建對(duì)象時(shí)(new),必會(huì)調(diào)用一個(gè)特殊的方法,這個(gè)方法是初始化對(duì)象信息的為new服務(wù)的安寺。這個(gè)方法稱為“構(gòu)造器”
使用 new + 構(gòu)造方法創(chuàng)建一個(gè)新的對(duì)象厕妖。
構(gòu)造函數(shù)是定義在 Java類中的一個(gè)用來初始化對(duì)象的函數(shù)。
構(gòu)造函數(shù)與類同名且沒有返回值挑庶。
例如: Person類的構(gòu)造函數(shù):
publicclassPerson{intid;intage;Person(intn,inti){id=n;age=i;}}
創(chuàng)建對(duì)象時(shí)言秸,使用構(gòu)造函數(shù)初始化對(duì)象的成員變量
publicclassTest{publicstaticvoidmain(String[]args){Persontom=newPerson(1,18);Personjeck=newPerson(2,20);}}
二、構(gòu)造方法的特點(diǎn):
1) 名稱必須和類名一致迎捺,與類名相同
2) 沒有返回類型|void
3) 構(gòu)造器可以存在return井仰,return有選擇的跳出構(gòu)造器
4) 不能隨便調(diào)用,和new在一起使用破加,其他時(shí)候不能調(diào)用
5) 修飾符不能為 final abstract static
作用:
初始化對(duì)象信息,不是用于創(chuàng)建對(duì)象的
空構(gòu)造:
沒有參數(shù)的構(gòu)造器雹嗦、無參構(gòu)造
1) 一個(gè)類中范舀,如果沒有顯示|手動(dòng) 加入 任意構(gòu)造器 javac編譯后 自動(dòng)加入空構(gòu)造
2) 一旦加入構(gòu)造器合是, javac 不會(huì)加入空構(gòu)造器
三、方法的重載
方法的重載是指一個(gè)類中可以定義有相同的方法名锭环,但參數(shù)不同的多個(gè)方法聪全。調(diào)用時(shí),會(huì)根據(jù)不同的參數(shù)列表選擇對(duì)應(yīng)的方法辅辩。
四难礼、構(gòu)造方法的重載
與普通方法一樣,構(gòu)造方法也可以重載
例子如下:
五玫锋、?引用與內(nèi)存分析
A:一個(gè)對(duì)象的內(nèi)存圖
B:二個(gè)對(duì)象的內(nèi)存圖
C:三個(gè)對(duì)象的內(nèi)存圖
內(nèi)存分析
劃分
引用的特點(diǎn):
1) 同一時(shí)刻一個(gè)一引用只能指向一個(gè)對(duì)象
2) 一個(gè)對(duì)象可以被多個(gè)引用所指向蛾茉,其中一個(gè)對(duì)其進(jìn)行更改,該對(duì)象的其他引用也可見該變化
3) Java一切為值傳遞撩鹿,引用拷貝地址
約定俗成的命名規(guī)則
類名的首字母大寫
變量名和方法名的首字母小寫
運(yùn)用駝峰標(biāo)識(shí)
例子:
publicclassCat{Stringcolor;// 毛的顏色Stringname;// 名稱publicvoidchase(Micemice){mice.type="jerry";// 改變System.out.println(name+" 逮 "+mice.type);}publicstaticvoidmain(String[]args){// 引用? 與內(nèi)存分析(運(yùn)行期為--》數(shù)據(jù)的流向)Catcat=newCat();cat=newCat();// 引用發(fā)生變化谦炬,同一個(gè)時(shí)刻一個(gè)引用只能指向一個(gè)對(duì)象cat.color="黑色";cat.name="tom";Micemice=newMice();mice.type="米奇";// 將二者聯(lián)系起來? --》 依賴cat.chase(mice);// 傳遞時(shí),值拷貝节沦,拷貝地址键思,拷貝完成后? 一個(gè)對(duì)象被多個(gè)引用所指向System.out.println(mice.type);// jerry 其中一個(gè)對(duì)其發(fā)生變化,該對(duì)象的其他引用也可減該變化}}classMice{Stringtype;}
定義如下類
publicclassBirthDate{intday;intmonth;intyear;publicBirthDate(intd,intm,inty){day=d;month=m;year=y;}voidsetDay(intd){day=d;}voidsetMonth(intm){month=m;}voidsetYear(inty){year=y;}intgetDay(){returnday;}intgetMonth(){returnmonth;}intgetYear(){returnyear;}voiddisplay(){System.out.println(day+"-"+month+"-"+year);}}
測試類:
publicclassTest{publicstaticvoidmain(String[]args){Testtest=newTest();intdate=9;BirthDated1=newBirthDate(7,7,1970);BirthDated2=newBirthDate(1,1,2000);test.change1(date);test.change2(d1);test.change3(d2);System.out.println(date);System.out.println(d1);System.out.println(d2);}voidchange1(inti){i=1234;}voidchange2(BirthDateb){b=newBirthDate(22,2,2004);}voidchange3(BirthDateb){b.setDay(22);}}
總結(jié):
對(duì)象的創(chuàng)建和使用甫贯,必須使用new 關(guān)鍵字創(chuàng)建對(duì)象吼鳞,使用對(duì)象引用.成員變量來引用對(duì)象的成員變量,使用對(duì)象引用.方法(參數(shù)列表)來調(diào)用對(duì)象的方法叫搁。
同一類的每個(gè)對(duì)象有不同的成員變量存儲(chǔ)空間赔桌,同一類的每個(gè)對(duì)象共享該類的方法,
非靜態(tài)方法是針對(duì)每個(gè)對(duì)象進(jìn)行調(diào)用 常熙。
樂字節(jié)原創(chuàng)纬乍,轉(zhuǎn)載請(qǐng)注明出處。請(qǐng)繼續(xù)關(guān)注樂字節(jié)