java如何封装
封装的概念
封装是面向对象编程的三大特性之一(封装、继承、多态),指将数据(属性)和行为(方法)捆绑到一个单元(类)中,并对外隐藏内部实现细节。通过访问修饰符(如 private、protected、public)控制数据的访问权限,确保数据安全性和代码可维护性。
实现封装的核心步骤
定义私有属性
使用 private 修饰符声明类的属性,限制外部直接访问:
private String name;
private int age;
提供公共方法(Getter/Setter)
通过公共方法(如 getXxx() 和 setXxx())间接访问或修改私有属性,可在方法中添加逻辑控制:
public String getName() {
return name;
}
public void setName(String name) {
if (name != null && !name.isEmpty()) {
this.name = name;
}
}
构造方法封装
通过构造方法初始化对象时强制校验数据:
public Person(String name, int age) {
this.name = name;
if (age > 0) {
this.age = age;
}
}
封装的优势
- 数据安全性:防止外部直接修改属性,避免非法值(如负数年龄)。
- 灵活性:内部逻辑修改不影响外部调用(如字段名变更或计算逻辑调整)。
- 代码可维护性:集中控制数据访问,便于调试和扩展。
示例代码
public class Person {
private String name;
private int age;
public Person(String name, int age) {
setName(name);
setAge(age);
}
public String getName() {
return name;
}
public void setName(String name) {
if (name != null) {
this.name = name;
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}
进阶实践
- 不可变对象:通过移除 Setter 方法或使用
final修饰属性实现对象不可变(如String类)。 - 包级封装:使用
default(无修饰符)限制同一包内访问。 - 保护性拷贝:返回可变对象时返回其副本,避免外部修改影响内部状态。







