- 可定义多个构造方法,在new操作符调用时,编译器会根据构造方法的参数数量/位置/类型自动区分:
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this.name = name;
this.age = 12;
}
public Person() {
}
}
如果调用new Person("Xiao Ming", 20);,会自动匹配到构造方法public Person(String, int)。
如果调用new Person("Xiao Ming");,会自动匹配到构造方法public Person(String)。
如果调用new Person();,会自动匹配到构造方法public Person()。
- 一个构造方法可以调用其他构造方法,这样做的目的是便于代码复用。调用其他构造方法的语法是
this(…):
class Person {
private String name;
private int age;
public Person(String name, int age) { //构造函数1
this.name = name;
this.age = age;
}
public Person(String name) { // 构造函数2
this(name, 18); // 调用构造函数1
}
public Person() { // 构造函数3
this("Unnamed"); // 调用构造函数2
}
}