在 Java 里,private 是一种访问修饰符(access modifier),用来限制类成员(字段、方法、构造器等)的可见范围。
private 表示:只有“当前这个类自己”能访问,别的类(包括子类)都不能直接访问。
public class Person {
private int age;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
age 是 privatePerson 类内部可以随便用person.age❌ 错误示例:
Person p = new Person();
p.age = 18; // 编译错误:age has private access
| 修饰符 | 同一类 | 同一包 | 子类 | 其他包 |
|---|---|---|---|---|
private |
✅ | ❌ | ❌ | ❌ |
| 默认(不写) | ✅ | ✅ | ❌* | ❌ |
protected |
✅ | ✅ | ✅ | ❌ |
public |
✅ | ✅ | ✅ | ✅ |
*默认修饰符对子类:同包子类可以,不同包不行
用 private 隐藏内部数据,通过 getter / setter 控制访问:
private String name;
public void setName(String name) {
if (name != null) {
this.name = name;
}
}
✅ 好处:
只在类内部使用的工具方法:
private void log() {
System.out.println("log");
}
外部类用不到,也不应该暴露。
public class Config {
private static Config instance = new Config();
private Config() {}
public static Config getInstance() {
return instance;
}
}
private 构造方法 → 防止外部 new 对象
private 能被子类继承?public / protected 方法访问privatefield.setAccessible(true);
✅ 技术上可以
❌ 设计上不推荐(破坏封装)
private= 只给自己用,别人别碰,是 Java 封装的核心手段。
如果你愿意,我也可以从 JVM 层面 / 面试角度 / 和 final 的区别 再给你讲一层。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。