java构造器
java类的构造器
在用new创建java类时,会调用与类同名的构造器方法创建类。
多个构造器
在java中,通过重载(overload),一个类可以有多个构造器,各个构造器通过方法的签名(signature) 区分。
*签名:方法名和参数类型。如:
People()
People(int)
People(String)
People(String,int)
无参数的构造器
如果一个类没有提供构造器,java会自动提供一个无参数的构造器,将所有实例字段初始化为默认值。例如:数据型设为0,布尔型设为false,对象变量设为null。
如果提供了构造器,但是没有提供无参数构造器,那么构造对象时就必须提供参数。
实例字段的初始化
默认初始化
如果没有显式地初始化实例字段,则实例字段就会被初始化为默认值:数值为0,布尔型为false,对象引用为null。
显式初始化
显式初始化可以通过在构造器中为实例字段赋值,也可以在类定义中为实例字段赋值:
public class People {
private int age;
private String name = "Unknow";
...
}
这样在执行构造器方法之前,name会被赋值为"Unknown"。
初始化块
java中可以通过初始化块(initialization block) 来对字段进行初始化,这些块在对象被构造时执行,例如:
public class People {
private int age;
private String name;
{
age = 10;
}
{
name = "Unknown";
}
...
}
调用其他构造器
可以用this() 调用同一个类的其他构造器,例如:
public class People {
private int age;
private String name;
public People() {
age = 10;
name = "Unknown";
}
public People(int age) {
this();
this.age = age;
}
}
对象构造顺序
调用构造器时,代码的具体执行顺序为:
- 如果构造器第一行调用了另一个构造器,则根据提供的参数调用另一个构造器
- 否则
2.1 所有数据字段初始化为默认值
2.2 按照在类声明中出现的顺序,执行所有字段初始化方法和初始化块。 - 执行构造器主体代码

浙公网安备 33010602011771号