📜  Java-构造函数(1)

📅  最后修改于: 2023-12-03 15:16:02.207000             🧑  作者: Mango

Java 构造函数

什么是构造函数?

在Java中,构造函数是一个特殊的方法,用于在创建对象时为对象赋初值。每个类可以拥有一个或多个构造函数,构造函数的名称必须与类名相同,且没有返回类型。当我们创建一个新对象时,会自动调用该类的构造函数以完成初始化工作。

例如,下面是一个简单的构造函数示例,为Person类的对象初始化age和name属性:

public class Person {
    private String name;
    private int age;

    // 构造函数
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
构造函数的重载

与其他方法类似,Java中的构造函数也可以进行重载,即一个类可以定义多个不同参数列表的构造函数。例如,我们可以添加另一个带有一个参数的构造函数,仅初始化对象的name属性:

public 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;
    }

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

注意,由于Java不支持方法的重载仅通过返回类型区分的情况,因此我们不能使用构造函数来区分两个完全相同参数列表但返回不同类型的构造函数。

默认构造函数

如果一个类没有显式定义构造函数,Java会提供一个默认的无参构造函数。因此,我们可以通过以下方式来创建该类的对象:

Person p = new Person();

这种方式与显式定义一个无参构造函数相同:

public class Person {
    private String name;
    private int age;

    // 默认构造函数
    public Person() {
        this.name = "";
        this.age = 0;
    }

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
调用构造函数

我们可以使用new关键字调用构造函数来创建一个新对象。例如,下面的代码使用带两个参数的构造函数创建一个新的Person对象:

Person p1 = new Person("小明", 18);

当我们调用构造函数时,Java会执行构造函数中的代码来为对象赋初值,因此我们可以在构造函数中执行任何初始化代码,例如打开文件、读取配置等。由于构造函数与类名相同,因此我们可以使用this关键字在构造函数中调用其他构造函数。例如,下面的代码使用带一个参数的构造函数来初始化对象:

public 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, 0);
    }

    // 默认构造函数
    public Person() {
        this("");
    }

    // getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
总结

Java中的构造函数是一个特殊的方法,用于在创建对象时为对象赋初值。与其他方法类似,我们可以对构造函数进行重载,以支持不同的参数列表。如果没有显式定义构造函数,则Java会提供一个默认的无参构造函数。我们可以使用new关键字调用构造函数来创建新对象。