1.构造方法(Constructor):

构造方法名字和类名是一样的。不会有返回值。当你用new关键字创建一个对象的时候,构造方法被java虚拟机调用。

1.1 用new关键字创建一个对象的时候,构造方法被java虚拟机正常调用



本章源码

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();//正常调用无参构造函数。
        FourAng d = new FourAng(3, 10);//正常调用2个参数的构造函数。
        System.out.println(c.area());
        System.out.println(d.area());
    }
}

result is:
4.0
30.0

作业: a班的门关了,b班的门开了又关了。The name of method(方法) should be closeDoor(), openDoor(), the property(属性) of the class is door.




java中自动插入一个默认的构造函数,这到底怎么回事?

当没有任何构造函数,java编译器,会插入一个默认的构造函数  

见下面的例子:

本章源码

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);

    }
}

结果:

0.02
0.0
编译器会把上面的代码先变成如下的形式,注意: 插入一个缺省的构造函数。里面什么也没干。
马克- to-win:马克 java社区:防盗版实名手机尾号: 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);

    }
}

结果:

0.02
0.0

解释一下上面的例子@马克-to-win:实验表明:最开始x=0,且y=0,后来执行构造函数之前,系统先用double x=0.02; double y=0;赋值, 之后再用构造函数的方法最后赋值。如构造函数中什么都没做就用系统开始的赋值。