在 Java 里大量使用 private,本质上是为了封装(Encapsulation)和控制访问,这是面向对象编程的核心思想之一。下面从几个角度说明「为什么要用 private」。
private 表示只有本类内部能访问,外部(其他类、子类)都不能直接访问。
class User {
private String password;
public void setPassword(String pwd) {
// 可以在这里做校验、加密
this.password = encrypt(pwd);
}
}
外部不能直接:
user.password = "123"; // ❌ 编译错误
✅ 好处:
如果不加 private,外部可以随便改值,可能导致对象处于“非法状态”。
class Student {
public int age;
}
student.age = -100; // 逻辑上不合理
用 private + setter 可以控制:
public void setAge(int age) {
if (age < 0) throw new IllegalArgumentException();
this.age = age;
}
假设以后你想:
如果字段是 private,你只改类内部即可;
如果是 public,所有用到它的地方都可能要改。
Java 社区普遍约定:
privategetter / setterprivate String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
很多框架(Spring、Hibernate、Jackson)都依赖这种方式。
private 比 protected / public 更严格:
| 修饰符 | 本类 | 同包 | 子类 | 其他类 |
|---|---|---|---|---|
| private | ✅ | ❌ | ❌ | ❌ |
| default | ✅ | ✅ | ❌ | ❌ |
| protected | ✅ | ✅ | ✅ | ❌ |
| public | ✅ | ✅ | ✅ | ✅ |
private 能最大程度减少“意外耦合”。
public static finalrecord)但业务对象的状态一般都应 private。
Java 用
private,是为了把“数据”藏起来,把“行为”暴露出来,让程序更安全、更清晰、更好维护。
如果你愿意,我也可以对比 Java 和 Python / C++ 的封装方式差异。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。