java如何自己封装
封装的概念
封装是面向对象编程的三大特性之一,指将数据(属性)和行为(方法)捆绑在一起,并对外隐藏内部实现细节,仅通过公开的接口与外界交互。在Java中,封装主要通过访问修饰符(private、protected、public)和类设计实现。
封装的核心步骤
使用访问修饰符控制可见性

- 将类的成员变量(属性)声明为
private,防止外部直接访问。 - 提供公开的
getter和setter方法,用于安全读写属性值。
public class Person {
private String name; // 私有属性
private int age;
// Getter方法
public String getName() {
return name;
}
// Setter方法(可添加逻辑验证)
public void setName(String name) {
if (name != null && !name.isEmpty()) {
this.name = name;
}
}
}
隐藏实现细节
- 将内部复杂的逻辑或辅助方法设为
private,仅暴露必要的公共接口。 - 通过方法封装业务规则,例如数据校验、计算逻辑等。
public class BankAccount {
private double balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
private void logTransaction(String type) {
System.out.println("Transaction: " + type);
}
}
通过构造方法初始化对象

- 使用构造方法强制初始化必填属性,避免对象状态不一致。
public class Student {
private String id;
private String name;
public Student(String id, String name) {
this.id = id;
this.name = name;
}
}
封装的优势
- 安全性:防止外部代码随意修改内部数据。
- 灵活性:内部逻辑变更不影响外部调用。
- 可维护性:代码结构清晰,易于扩展和调试。
实际应用示例
封装一个简单的温度转换工具类:
public class TemperatureConverter {
private double celsius;
public TemperatureConverter(double celsius) {
this.celsius = celsius;
}
public double toFahrenheit() {
return (celsius * 9 / 5) + 32;
}
// 隐藏内部实现,仅提供结果
public String getResult() {
return String.format("%.1f°C = %.1f°F", celsius, toFahrenheit());
}
}
调用方式:
TemperatureConverter converter = new TemperatureConverter(25);
System.out.println(converter.getResult()); // 输出:25.0°C = 77.0°F






