java属性私有化后必须通过public getter/setter方法受控访问:getter命名getxxx()或isxxx(),setter命名setxxx()且可加校验;可依需设只读、只写或构造初始化;亦支持构造传参、内部类访问及builder模式等封装方式。

Java 属性私有化后,不能直接被外部访问,但可以通过规范的公共方法对外提供受控访问——核心就是写 getter(取值)和 setter(赋值)方法。这不是可选项,而是封装落地的关键动作。
用 public 的 get/set 方法暴露访问入口
private 修饰的属性只能在本类内部使用,外部想读或写,必须走你开放的“门”。这扇门就是 public 修饰的 getter 和 setter 方法:
-
getter 方法:命名格式为
getXxx()(布尔类型可用isXxx()),返回对应属性值,不带参数 -
setter 方法:命名格式为
setXxx(类型 参数),无返回值(void),接收新值并完成赋值 - 方法体里用
this.属性名 = 参数;完成赋值,读值则直接return this.属性名;
在 setter 中加入校验逻辑,保护数据有效性
私有化不只是“不让改”,更是“只允许合理地改”。setter 是加约束的最佳位置:
- 比如年龄不能是负数:
if (age >= 0 && age - 成绩必须在 0–100:
if (score >= 0 && score - 非法值可抛异常(如
IllegalArgumentException)或打印提示,避免静默失败
根据需求灵活控制读写权限
不是每个属性都必须同时有 get 和 set。访问控制权完全由你掌握:
- 只读属性:只提供
getXxx(),不写setXxx()(如身份证号、创建时间) - 只写属性:只提供
setXxx(),不暴露读取能力(较少见,如密码重置密钥) - 构造时初始化:敏感字段可在构造方法中赋值,之后禁止修改(配合无 setter 实现)
其他合法且常见的间接访问方式
除了标准 getter/setter,还有几种符合封装原则的补充方式:
-
构造方法传参初始化:对象创建时一次性设值,如
new Student("张三", 20) - 内部类访问特权:非静态内部类可直接访问外部类的 private 成员,适合封装紧密的协作逻辑
- Builder 模式:对复杂对象,用链式调用构建器替代大量 setter,更清晰可控
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











