Java封装通过private隐藏成员变量并提供带校验的public getter/setter实现信息隐藏;方法聚焦行为而非实现,合理使用default/protected控制访问层级。

Java 中封装通过访问修饰符控制成员变量的可见性,并提供公共方法来间接操作这些变量,从而实现信息隐藏原则。
用 private 修饰成员变量
将类的字段(属性)声明为 private,禁止外部直接访问或修改,这是信息隐藏的第一步。外部代码无法绕过逻辑校验随意更改内部状态。
- 例如:把 age 设为 private int age;,外界就不能写 obj.age = -5;
- 即使子类也无法直接访问父类的 private 字段,增强了封装边界
提供 public 的 getter 和 setter 方法
通过受控的公共方法暴露读写能力,在方法内部加入校验、转换或日志等逻辑,确保数据合法性与行为一致性。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- setter 中可做参数检查:if (age 150) throw new IllegalArgumentException();
- getter 可返回副本(如 ArrayList),避免外部修改内部集合
- 某些字段只提供 getter(只读),或只提供 setter(只写),按需暴露
不暴露内部实现细节
方法命名和接口设计聚焦“做什么”,而非“怎么做”。比如提供 getDiscountPrice(),而不暴露 discountRate 或计算过程。
立即学习“Java免费学习笔记(深入)”;
- 内部用 HashMap 缓存结果,对外仍用同一方法签名,调用方无需感知变更
- 避免 public static final 常量暴露过多业务规则(如折扣阈值),改用方法封装判断逻辑
使用包级私有(default)和 protected 合理分层
在模块或继承体系中,用默认访问权限(无修饰符)或 protected 控制更细粒度的可见范围,既支持协作又不破坏封装。
- 工具类中的辅助方法设为包私有,仅同包内其他类可调用
- 父类将部分逻辑设为 protected,供子类扩展,但不对整个项目公开

















