Java 中把属性设置为private
,主要就是为了防止程序员在操纵对象时进行一些不合理或不安全的操作,避免 “瞎搞”。
这样的设计在很多编程语言中都很常见。通过将属性封装起来,只提供特定的方法来访问和修改,就可以在这些方法中加入各种逻辑判断和限制条件,确保数据的完整性和一致性。比如在设置年龄的方法里,可以添加逻辑判断年龄是否在合理范围内,从而避免出现不合理的数据。这种设计模式是一种良好的编程实践,能让程序更加健壮、易于维护和扩展。
对象本身就像一个 “乖孩子”,它没有自主意识去做不合理的事情。而程序员在操作对象时,可能会因为各种原因出现错误或不合理的操作,所以 Java 的设计者通过private
等访问修饰符来设置限制,就像是给对象穿上了一层 “保护衣”,防止程序员不小心 “伤害” 到对象或者让对象处于不合理的状态。
// 定义一个人类
class Person {
// 私有属性:年龄(就像带锁的房间)
private int age;
// 公有方法:获取年龄(相当于拿钥匙开门查看)
public int getAge() {
return age; // 只能通过方法访问私有属性
}
// 公有方法:设置年龄(带规则的「开门修改」)
public void setAge(int newAge) {
// 加个规则:年龄不能负数,不能超过200岁
if (newAge >= 0 && newAge <= 200) {
age = newAge;
} else {
System.out.println("年龄不合理!请重新设置。");
}
}
}
// 测试类(程序员操纵对象的地方)
public class TestDemo {
public static void main(String[] args) {
// 创建一个人的对象(new出一个「人」)
Person tom = new Person();
// 尝试直接访问私有属性(会报错!就像强行撬锁)
// tom.age = 18; ❌ 这行代码会报错,因为age是private的!
// 只能通过方法设置年龄(走合法通道)
tom.setAge(25); // 合法年龄,设置成功
System.out.println("Tom的年龄:" + tom.getAge()); // 输出:25
tom.setAge(-5); // 非法年龄,触发规则提示
System.out.println("修改后的年龄:" + tom.getAge()); // 输出:还是25(没被修改)
}
}
代码关键点:
private
锁门:age
属性被private
修饰,外界无法直接访问。- 方法当钥匙:通过
getAge()
和setAge()
方法间接操作age
,就像用钥匙开门。 - 规则保护:
setAge()
里加了逻辑判断(年龄必须≥0 且≤200),防止程序员「瞎设年龄」。