【发布时间】:2022-12-17 16:10:23
【问题描述】:
根据定义,Java 中的封装是将代码和数据包装到一个单元中的过程。但是如果一个类有2个成员变量和一个方法,并且变量和方法都有public访问修饰符,我们能说这个类是封装类吗?
例如,我们可以说下面的类是否被封装
public class AddNumbers {
public int a;
public int b;
public void add(){
System.out.println(a+b);
}
}
【问题讨论】:
-
您的代码在语法上无效。如果代码纯粹是为了演示一些通用结构,通常这不是什么大问题,但是您为
add方法定义了两个与字段同名的参数这一事实使这非常可疑。你做了什么打算add方法要做的事情:取两个参数并将它们相加或返回两个字段的总和?无论哪种方式,我都不会将其描述为“封装”。 -
感谢@JoachimSauer 的快速回复。我修改了课程。你现在能回答这个问题吗?我正在寻找我们不能将其称为封装类的原因。
-
我不认为你的第一句话是正确的。您所描述的是更普遍的面向对象编程。封装限制对某些东西(通常是内部状态)的访问。您的示例代码中没有访问限制:任何其他代码都可以完全(公开)访问所有内容(最重要的是字段,即对象的状态)。
标签: java oop encapsulation