通过private修饰字段实现数据隐藏,防止外部直接访问;2. 提供带校验逻辑的public getter和setter方法控制数据读写,确保合法性,如姓名非空、年龄合理,从而实现封装与数据保护。

在Java中实现对象的封装与数据保护,核心是通过访问控制和合理的类设计来隐藏内部状态,只暴露必要的行为。这不仅能提升代码的安全性,还能增强可维护性和灵活性。
使用private修饰字段
将类的成员变量声明为private是最基本的数据保护手段。这样外部无法直接访问或修改这些变量,防止非法操作。
例如:
public class Person { private String name; private int age; // 外部不能直接访问name和age }
提供公共的getter和setter方法
在字段被私有化后,通过public的getter和setter方法控制对数据的读取和修改。可以在这些方法中加入逻辑校验,确保数据合法性。
立即学习“Java免费学习笔记(深入)”;
示例:
public String getName() { return name; } public void setName(String name) { if (name != null && !name.trim().isEmpty()) { this.name = name; } else { throw new IllegalArgumentException("姓名不能为空"); } } public int getAge() { return age; } public void setAge(int age) { if (age >= 0 && age <= 150) { this.age = age; } else { throw new IllegalArgumentException("年龄必须在0-150之间"); } }
避免返回可变对象的引用
如果类中包含数组或集合等可变对象,直接通过getter返回引用可能导致外部绕过setter修改内部状态。应返回副本以保护数据。
例如:
private List<String> hobbies = new ArrayList<>(); public List<String> getHobbies() { return new ArrayList<>(hobbies); // 返回副本 }
总结:封装的本质是“对外接口简单,对内控制严格”。通过private字段、受控的访问方法以及必要时的防御性拷贝,能有效实现对象的数据保护。基本上就这些,不复杂但容易忽略细节。


