Java封装通过private隐藏字段和内部方法,仅暴露public业务接口,如deposit()、withdraw()等,配合getter/setter控制访问逻辑,使内部实现可自由重构而不影响调用方。

Java 中通过封装隐藏复杂底层实现细节,核心是用 private 修饰成员变量和内部方法,只暴露简洁、稳定的公共接口(public 方法),让调用者无需关心内部怎么运作。
用 private 限制直接访问
把字段和辅助方法设为 private,外部无法直接读写或调用。比如一个银行账户类,余额不对外暴露:
class BankAccount {
private double balance; // 外部不能直接 balance = -100;
private String accountNumber;
<pre class="brush:java;toolbar:false;">private void validateAmount(double amount) { /* 内部校验逻辑 */ }
}
这样即使内部用多层校验、日志、事务处理,外部也只看到 clean 的接口。
提供有意义的 public 方法
公开的方法应表达业务意图,而非技术细节。例如:
- deposit(double amount) —— 调用时不用管是否加锁、是否触发通知
- withdraw(double amount) —— 内部自动检查余额、记录流水、抛出特定异常
- getBalance() —— 可能返回缓存值、或实时查数据库,调用方无感知
用 getter/setter 控制访问逻辑
即使要提供读写能力,也不直接暴露字段。setter 可加入约束,getter 可做转换或懒加载:
public void setAge(int age) {
if (age 150) {
throw new IllegalArgumentException("Invalid age");
}
this.age = age;
}
<p>public String getFullName() {
return firstName + " " + lastName; // 计算得出,非直接返回字段
}</p>把复杂流程封装进单一方法
把多步骤操作(如初始化连接、解析配置、校验权限)收拢到一个方法里:
- 调用 connectToDatabase(),内部可能加载驱动、重试、设置超时、切换备用地址
- 调用 processOrder(Order order),内部协调库存、支付、物流,但外部只传一个对象
只要接口不变,内部随时可重构——换数据库、加缓存、切微服务,都不影响已有代码。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











