在 Java 中,private 是访问修饰符,用于控制成员(变量、方法、构造器)的访问范围。
“修改 private”通常有以下几种常见理解,我分别说明:
private 改成其他访问权限(最常见)直接修改关键字即可:
// 原来
private int age;
// 改成
public int age; // 所有类可访问
protected int age; // 同包 + 子类
int age; // 默认(包访问权限)
✅ 这是最直接的“修改 private”方式。
Java 封装思想:private 变量不直接改,通过 setter 改
public class User {
private String name;
public void setName(String name) {
this.name = name;
}
}
使用:
User u = new User();
u.setName("Tom");
常用于测试或框架:
import java.lang.reflect.Field;
User u = new User();
Field f = User.class.getDeclaredField("name");
f.setAccessible(true);
f.set(u, "Jack");
⚠ 违反封装,生产代码不推荐。
❌ private 不能被继承,也不能被覆盖
class Parent {
private void test() {}
}
class Child extends Parent {
// 这不是重写,只是新方法
public void test() {}
}
常见于单例:
public class Singleton {
private Singleton() {}
}
想让外部能创建:
public Singleton() {} // 改成 public
或通过静态方法:
public static Singleton getInstance() {
return new Singleton();
}
| 目的 | 做法 |
|---|---|
| 改访问权限 | 改 private 为 public/protected/默认 |
| 安全修改值 | 用 setter |
| 强行改 | 反射 |
| 子类用 | 不能,用 protected |
如果你有具体代码场景(如 Spring、单例、单元测试),可以发出来,我帮你精准改。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。