Skip to content

构造方法

构造函数特点

构造函数有几个明显特征:

  1. 方法名必须和类名完全相同
  2. 没有返回值类型(连 void 也没有)
  3. new 创建对象时自动调用
  4. 可以重载(多个构造函数)

构造函数的重载

Java 支持多个构造函数(参数不同)。

java
public class Person {

    String name;
    int age;

    public Person() {
        System.out.println("无参构造");
    }

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

Java 会根据参数选择对应构造函数。

java
new Person();
new Person("张三");
new Person("张三", 18);

默认构造函数

如果没有写任何构造函数,Java 会自动生成一个默认无参构造函数

java
public class Person {

    String name;

}
java
public class Person {

    String name;

    public Person() {
    }

}

如果自己写了构造函数,Java 就不会再自动生成默认构造函数

java
public class Person {

    public Person(String name) {
    }

}
java
public class Person {

    public Person(String name) {
    }

}

this() 调用构造函数

  • this()在构造函数内部调用当前类的其他构造函数 的一种语法,主要用于 构造函数之间的复用,避免重复代码。

  • this() 调用必须放在构造函数体的 第一行

java
public class User {
    private String username;
    private String role;
    private int level;

    // 基础构造函数(全参数)
    public User(String username, String role, int level) {
        this.username = username;
        this.role = role;
        this.level = level;
        System.out.println("全参数构造函数被调用");
    }

    // 中间构造函数:默认等级为 1
    public User(String username, String role) {
        this(username, role, 1); // 调用上面的三参数构造函数
        System.out.println("双参数构造函数被调用");
    }

    // 默认构造函数:默认角色为 "GUEST"
    public User(String username) {
        this(username, "GUEST"); // 调用上面的双参数构造函数
        System.out.println("单参数构造函数被调用");
    }
}