封装通过将成员变量设为private并提供public的getter/setter方法实现数据隐藏与安全访问;private字段仅本类可访问,外部直接访问会编译报错;getter用于读取,setter支持校验与扩展。

在 Java 中,封装是通过将类的成员变量设为 private(私有),并提供公共的 getter 和 setter 方法来控制访问,从而实现数据隐藏和安全操作。
如何设置成员变量为私有
在类中声明字段时,在访问修饰符位置写 private,即可限制其只能在本类内部访问:
public class Person {
private String name;
private int age;
}
- 外部类、子类或其他对象无法直接读写
name或age - 编译器会报错:例如
person.name = "Alice"不合法
为什么要用 getter/setter 而不是直接 public
私有字段本身不可见,必须配套提供受控的访问方式:
-
getter(如
getName())用于安全读取值 -
setter(如
setAge(int age))可在赋值前校验逻辑,比如防止年龄为负数 - 后续可随时修改内部实现(如加日志、缓存、转换),调用方代码无需改动
一个完整封装示例
public class Person {
private String name;
private int age;
// getter
public String getName() {
return name;
}
// setter(含简单校验)
public void setAge(int age) {
if (age >= 0 && age
- 使用
this.age明确区分参数与成员变量 - setter 中加入业务规则,体现封装的价值
- 不提供
setName()?可以按需添加,甚至只读(只写 getter)
IDE 可以快速生成 getter/setter
IntelliJ IDEA 或 Eclipse 支持快捷生成:
- 右键 → Generate → Getter and Setter
- 选中字段 → 自动生成标准方法,省去手写重复代码
- 也可自定义模板(如加空判、日志等)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











