1.構(gòu)造方法(Constructor):
構(gòu)造方法名字和類名是一樣的。不會(huì)有返回值。當(dāng)你用new關(guān)鍵字創(chuàng)建一個(gè)對(duì)象的時(shí)候,構(gòu)造方法被java虛擬機(jī)調(diào)用。
1.1 用new關(guān)鍵字創(chuàng)建一個(gè)對(duì)象的時(shí)候,構(gòu)造方法被java虛擬機(jī)正常調(diào)用
本章源碼
package com;
class FourAng {
double w;
double h;
FourAng() {
w = 2.0;
h = 2.0;
}
FourAng(double x, double y) {
w = x;
h = y;
}
double area() {
return w*h;
}
}
public class Test {
public static void main(String[] args) {
FourAng c = new FourAng();//正常調(diào)用無(wú)參構(gòu)造函數(shù)。
FourAng d = new FourAng(3, 10);//正常調(diào)用2個(gè)參數(shù)的構(gòu)造函數(shù)。
System.out.println(c.area());
System.out.println(d.area());
}
}
result is:
4.0
30.0
作業(yè): a班的門關(guān)了,b班的門開了又關(guān)了。The name of method(方法) should be closeDoor(), openDoor(), the property(屬性) of the class is door.
java中自動(dòng)插入一個(gè)默認(rèn)的構(gòu)造函數(shù),這到底怎么回事?
當(dāng)沒(méi)有任何構(gòu)造函數(shù),java編譯器,會(huì)插入一個(gè)默認(rèn)的構(gòu)造函數(shù)
見下面的例子:
本章源碼
class Line {
double x = 0.02;
double y;
}
public class Test {
public static void main(String[] args) {
Line c = new Line();
System.out.println(c.x);
System.out.println(c.y);
}
}
結(jié)果:
0.02
0.0
編譯器會(huì)把上面的代碼先變成如下的形式,注意: 插入一個(gè)缺省的構(gòu)造函數(shù)。里面什么也沒(méi)干。
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
本章源碼
class Circle1 {
double x = 0.02;
double y;
public Circle1(){
}
}
public class Test {
public static void main(String[] args) {
Circle1 c = new Circle1();
System.out.println(c.x);
System.out.println(c.y);
}
}
結(jié)果:
0.02
0.0
解釋一下上面的例子@馬克-to-win:實(shí)驗(yàn)表明:最開始x=0,且y=0,后來(lái)執(zhí)行構(gòu)造函數(shù)之前,系統(tǒng)先用double x=0.02; double y=0;賦值, 之后再用構(gòu)造函數(shù)的方法最后賦值。如構(gòu)造函數(shù)中什么都沒(méi)做就用系統(tǒng)開始的賦值。