在 Java 中,private 是访问修饰符(access modifier)的一种,用来表示“私有”。它的核心作用可以从「访问控制」和「设计思想」两个层面来理解。
被 private 修饰的成员(变量、方法、构造器):
public class Person {
private int age;
public void show() {
System.out.println(age); // ✅ 本类可以访问
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
// p.age = 18; // ❌ 编译错误:age 是 private
}
}
private 是实现封装的基础。
对外隐藏实现细节,只暴露必要接口
public class BankAccount {
private double balance;
public void deposit(double money) {
if (money > 0) {
balance += money;
}
}
public double getBalance() {
return balance;
}
}
✅ 外部不能直接改 balance
✅ 逻辑由类自己控制(比如防止负数)
防止外部随意修改对象状态:
private String password;
如果不私有化,任何类都能改密码,系统就不安全了。
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
✅ 可以在 setter 中加校验
✅ 后期修改逻辑不影响调用者
外部只关心“能干什么”,不关心“怎么干的”。
private void calculate() { ... }
这个方法只是内部辅助逻辑,对外没意义。
private Singleton() {}
防止外部随便 new 对象。
❌ 不能被子类继承访问
❌ 不能被其他包访问
❌ 不能通过对象直接调用
class A {
private void m() {}
}
class B extends A {
// 不能访问 A 的 private 方法
}
子类能看到
public/protected,但看不到private
| 修饰符 | 本类 | 同包 | 子类 | 其他包 |
|---|---|---|---|---|
| private | ✅ | ❌ | ❌ | ❌ |
| 默认 | ✅ | ✅ | ❌ | ❌ |
| protected | ✅ | ✅ | ✅ | ❌ |
| public | ✅ | ✅ | ✅ | ✅ |
private 的作用就是:把“不该给别人看、不该给别人改”的东西藏起来,只通过你允许的方式对外暴露。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。