所有成员变量与方法均为public的Java类是否属于封装类?
这个类算不算封装类?
首先得明确,Java里封装的完整定义不只是把代码和数据打包成一个单元,更核心的是隐藏类的内部状态(成员变量),只通过类提供的公共方法来访问或修改这些状态——这样才能保证数据安全,也方便后续维护。
来看你给出的这个类:
public class AddNumbers { public int a; public int b; public void add(){ System.out.println(a+b); } }
它确实把数据(a、b)和方法(add)放在了同一个类里,满足“代码与数据包装为单一单元”这个表层要求,但完全没做到封装的核心:
- 成员变量a和b都是public的,外部代码可以直接读写它们,比如随便给a赋值一个负数、或者不符合业务逻辑的值,这个类根本管不了。
- 类无法对自身数据的修改做任何校验、也没法在数据变化时执行额外逻辑,完全失去了封装的意义。
所以结论是:这个类不属于符合规范的封装类。封装的关键是对内部状态的保护,而不是简单的代码和数据的物理聚合。
内容的提问来源于stack exchange,提问作者akshay lonkar
相关产品推荐
相关产品推荐

