java如何封装数据
封装数据的基本概念
封装是面向对象编程的三大特性之一,通过隐藏对象的内部状态和实现细节,仅对外暴露必要的接口。Java中通过类(Class)和访问修饰符(private、protected、public等)实现封装。
实现封装的步骤
定义私有属性
使用private修饰类的成员变量,防止外部直接访问:
private String name;
private int age;
提供公共方法(Getter/Setter)
通过公共方法(如getXXX和setXXX)控制对私有属性的访问和修改:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
添加逻辑验证(可选)
在Setter方法中可加入数据验证逻辑,确保数据有效性:

public void setAge(int age) {
if (age > 0) {
this.age = age;
} else {
throw new IllegalArgumentException("年龄必须为正数");
}
}
完整示例代码
public class Person {
// 私有属性
private String name;
private int age;
// Getter方法
public String getName() {
return name;
}
// Setter方法(带验证)
public void setName(String name) {
if (name != null && !name.isEmpty()) {
this.name = name;
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
}
封装的优势
- 安全性:防止外部代码直接修改内部数据,避免非法值。
- 灵活性:可在Getter/Setter中添加额外逻辑(如缓存、日志)。
- 可维护性:内部实现修改不影响外部调用。
进阶技巧
- 不可变对象:通过省略Setter或使用
final修饰属性,实现对象创建后不可修改。 - Builder模式:适用于复杂对象的封装构建(如Lombok的
@Builder注解)。 - 记录类(Java 14+):使用
record简化纯数据类的封装(自动生成Getter/Equals等)。
// 记录类示例(Java 14+)
public record Student(String id, String name) {}






