构造方法是java中初始化私有属性最常用方式,支持直接赋值、参数校验、this()委托调用及final属性初始化,确保对象有效性和不可变性。

在 Java 中,构造方法是初始化封装属性最常用、最直接的方式。封装要求属性私有(private),而构造方法作为对象创建时的入口,天然适合完成对这些私有属性的赋值和校验。
直接在构造方法中为私有属性赋值
这是最基本的做法:在构造方法体内,用 this.属性名 = 参数名 的方式将传入的参数值赋给对应的私有字段。
例如:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // 初始化 name
this.age = age; // 初始化 age
}
}
注意:this. 用于区分形参和同名成员变量,避免歧义。
在构造方法中加入有效性校验
封装不只是“设 private”,更包括对数据合理性的控制。可在构造方法中检查参数是否合法,不合法则抛出异常,防止对象处于无效状态。
例如:
public Person(String name, int age) {
if (name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("姓名不能为空");
}
if (age 150) {
throw new IllegalArgumentException("年龄必须在 0~150 之间");
}
this.name = name;
this.age = age;
}
使用 this() 调用其他构造方法统一初始化逻辑
当类有多个构造方法时,为避免重复代码,可让部分构造方法通过 this(...) 委托给一个主构造方法,由它集中完成属性初始化和校验。
例如:
public Person(String name) {
this(name, 0); // 委托给双参构造
}
public Person(String name, int age) {
if (name == null) throw new IllegalArgumentException("姓名不可为空");
this.name = name;
this.age = age;
}
-
this(...)必须是构造方法的第一条语句 - 所有初始化逻辑集中在被调用的构造方法中,便于维护
配合 final 属性确保不可变性
若属性声明为 final,则必须在构造方法中(或声明时)完成初始化,否则编译报错。这进一步强化了封装与安全。
例如:
public class IDCard {
private final String id;
private final String owner;
public IDCard(String id, String owner) {
this.id = id != null ? id.trim() : "";
this.owner = owner != null ? owner.trim() : "";
}
}
此时 id 和 owner 一旦赋值就不能再修改,配合私有访问控制,真正实现只读封装。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











