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)開始的賦值。