封装通过private限制外部直接访问成员,仅暴露public getter/setter接口;private字段不可被外部读写,getter提供受控访问,setter可加入校验逻辑。

封装通过限制外部对类内部成员的直接访问,把实现细节“关进盒子”,只暴露必要的接口,从而实现隐藏。
用 private 修饰属性,切断外部直连
把字段声明为 private 是最基础的一步。一旦加了 private,其他类哪怕在同一包里,也不能用 对象.属性 的方式读写。比如:
-
private String name;→ 外部无法写person.name = "张三"; -
private double salary;→ 外部不能直接查看或篡改薪资数值
提供 public 的 getter/setter 方法作为唯一通道
不让人直接碰数据,但得给人用——所以提供受控的方法入口:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
public String getName() { return name; }:只读出口,不暴露 name 怎么存、是否缓存、是否从数据库加载 public void setAge(int a) { if (a >= 0 && a :校验逻辑藏在方法里,调用者只管传值,不用知道“为什么150是上限”
在方法内部替换实现,对外零影响
只要接口(方法签名)不变,内部怎么改都行:
- 原来
getName()直接返回字段,现在改成拼接前缀"VIP_" + name,调用方完全无感 - 原来
getBalance()读内存变量,后来改成实时查数据库或远程服务,只要返回类型和行为语义一致,使用者代码不用动
连方法本身也可以私有化,进一步收口
有些辅助逻辑根本不该被外界看到,比如格式化、校验共用步骤:
-
private boolean isValidEmail(String email) { ... }只在本类内被setEmail()调用 - 这类私有方法是真正的“幕后工人”,彻底从 API 表面消失,调用者既看不到,也用不到
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










