构造方法概述
构造方法(Constructor)用于创建对象时初始化对象。与普通方法不同,构造方法没有返回类型,且在创建对象时自动调用。
构造方法定义
public class Person {
private String name;
private int age;
// 构造方法(与类名相同,无返回类型)
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// 使用
Person p = new Person("张三", 25);
默认构造方法
如果类中没有定义任何构造方法,编译器会自动生成一个无参的默认构造方法:
public class Student {
private String name;
// 编译器自动生成: public Student() {}
}
// 使用默认构造方法
Student s = new Student();
注意:如果显式定义了构造方法,编译器不再生成默认构造方法。
构造方法重载
一个类可以有多个构造方法,只要参数列表不同:
public class Person {
private String name;
private int age;
// 无参构造
public Person() {
this.name = "未知";
this.age = 0;
}
// 有参构造
public Person(String name) {
this.name = name;
this.age = 0;
}
// 全参构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
this调用
使用this()可以在构造方法中调用另一个构造方法:
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 使用this调用其他构造方法
public Person() {
this("未知", 0); // 调用上面的构造方法
}
构造方法执行顺序
分配内存
→
初始化字段
→
执行构造方法
private构造方法
将构造方法设为private可以:
实现单例模式
阻止直接创建对象
强制通过静态方法获取实例
小结
- 构造方法与类名相同,没有返回类型
- 创建对象时自动调用
- 可以重载多个构造方法
- 使用this()调用其他构造方法
- 定义了构造方法后,编译器不再生成默认构造方法