在 Java 中,private 变量是类的私有成员,只能在该类内部直接访问,外部类(包括子类)不能直接访问。常见访问方式如下:
public class Person {
private String name;
public void setName(String name) {
this.name = name; // 类内部可以访问
}
public String getName() {
return name;
}
}
使用:
Person p = new Person();
p.setName("Tom");
System.out.println(p.getName());
这是 Java 封装的核心思想:
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
public class Student {
private String id;
public Student(String id) {
this.id = id; // 构造方法中可访问
}
}
import java.lang.reflect.Field;
Field field = obj.getClass().getDeclaredField("name");
field.setAccessible(true);
String value = (String) field.get(obj);
⚠ 破坏封装,仅用于框架、测试等场景。
class Outer {
private int x = 10;
class Inner {
void show() {
System.out.println(x); // 可以访问
}
}
}
class A {
private int a;
}
class B {
void test() {
A a = new A();
// a.a = 1; ❌ 编译错误
}
}
| 方式 | 是否推荐 |
|---|---|
| getter / setter | ✅ 推荐 |
| 构造方法 | ✅ 推荐 |
| 类内部访问 | ✅ 正常 |
| 反射 | ⚠ 特殊场景 |
| 外部直接访问 | ❌ 不允许 |
如果你有具体代码场景(比如 Spring、继承、单元测试),我可以给你更针对性的建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。