构造方法
构造函数特点
构造函数有几个明显特征:
- 方法名必须和类名完全相同
- 没有返回值类型(连
void也没有) - 在
new创建对象时自动调用 - 可以重载(多个构造函数)
构造函数的重载
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("单参数构造函数被调用");
}
}