在 Java 中,private 是一种访问控制修饰符,主要用于保护数据(字段)不被外部随意访问或修改。它的核心思想是:封装(Encapsulation)。
下面从原理、用法、常见保护方式及注意点来说明。
private 表示:只有当前类内部可以访问,外部类(包括子类)无法直接访问。
class Person {
private int age;
}
Person p = new Person();
// p.age = 10; // ❌ 编译错误,age 是 private
✅ 好处:
class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0 && age <= 150) {
this.age = age;
} else {
throw new IllegalArgumentException("年龄不合法");
}
}
}
使用:
Person p = new Person();
p.setAge(20);
System.out.println(p.getAge());
✅ 好处:
private double price;
public void setPrice(double price) {
if (price < 0) {
throw new IllegalArgumentException("价格不能为负");
}
this.price = price;
}
class User {
private String passwordHash;
public boolean checkPassword(String input) {
return passwordHash.equals(hash(input));
}
}
✅ 这是真正的“保护数据”
class Counter {
private int count;
public void increment() {
count++;
}
}
如果 count 是 public:
c.count = -999; // 破坏逻辑
private 是语言层面的访问控制,不是绝对安全。
Field f = Person.class.getDeclaredField("age");
f.setAccessible(true);
f.set(p, -100);
✅ 这说明了:
private 防的是误用和随意访问class Parent {
private int x;
}
class Child extends Parent {
// ❌ 无法访问 x
}
✅ 字段尽量 private
✅ 需要暴露时通过方法
✅ 只读数据只提供 getter,不提供 setter
private final String id;
public String getId() {
return id;
}
Java 中 private 通过“封装”保护数据:禁止外部直接访问,只允许通过受控方法进行读写。
如果你愿意,我可以:
private / protected / public免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。