多构造方法

240 阅读1分钟
  • 可定义多个构造方法,在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
    }
}

source