温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java封装要注意什么

发布时间:2026-10-26 20:44:20 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中进行封装(Encapsulation)时,核心思想是隐藏实现细节,暴露必要接口。以下是实际开发中需要注意的关键点:


一、基本规范

1. 属性私有化

  • 成员变量一般使用 private 修饰
  • 禁止外部直接访问和修改
private String name;
private int age;

2. 提供公共访问方法(getter / setter)

  • 使用 public 方法控制读写
  • 方法命名规范:getXxx() / setXxx()
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

二、封装中的注意事项

3. 在 setter 中做校验

避免非法数据进入对象内部

public void setAge(int age) {
    if (age < 0 || age > 150) {
        throw new IllegalArgumentException("年龄不合法");
    }
    this.age = age;
}

4. 避免直接暴露可变对象

返回对象引用会导致外部修改内部状态

❌ 错误示例:

public List<String> getList() {
    return list; // 外部可修改
}

✅ 正确做法(防御性拷贝):

public List<String> getList() {
    return new ArrayList<>(list);
}

或使用不可变集合(Java 9+):

return List.copyOf(list);

5. 构造方法也要封装校验逻辑

不要在构造方法中跳过校验

public User(String name, int age) {
    setName(name);
    setAge(age);
}

6. 控制读写权限

  • 只读:只提供 getter
  • 只写:只提供 setter
  • 完全隐藏:都不提供
private String password;

public void setPassword(String password) {
    this.password = password;
}

三、封装与设计原则

7. 遵循“最小暴露原则”

  • 能 private 就不 protected
  • 能 protected 就不 public

8. 使用包级私有(默认修饰符)

同一包内可见,外部不可见

void internalMethod() { }

9. 谨慎使用 public static

  • 公共常量可以用:
public static final int MAX_SIZE = 100;
  • 公共可变静态变量是反模式

四、常见误区

❌ 所有字段都加 getter/setter(等于没封装)
❌ getter/setter 中写复杂业务逻辑
❌ 返回 this 导致链式调用破坏封装
❌ 把集合、数组直接暴露出去


五、一句话总结

封装不是加 getter/setter,而是控制“谁能看、谁能改、怎么改”。

如果你愿意,我可以结合 实体类 / DTO / 领域模型 给你讲更实用的封装方式。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手