根据定义,Java 中的封装是将代码和数据包装到一个单元中的过程。但是如果一个类有2个成员变量和一个方法,并且变量和方法都具有公共访问修饰符,我们可以说该类是封装类吗?
例如,我们可以说下面的类是否被封装了
public class AddNumbers {
public int a;
public int b;
public void add(){
System.out.println(a+b);
}
}
是,或者不是。取决于人们如何定义“封装”。
鉴于您问题的措辞,我假设您正在使用来自维基百科的封装定义,(截至目前)内容为
在面向对象编程 (OOP) 中,封装是指将数据与操作这些数据的方法捆绑在一起,或者限制对某些对象组件的直接访问。
我不同意这个定义。或者更准确地说,我认为它不必要地区分“封装”和“数据隐藏”,这与我对日常对话中使用的术语“封装”的看法不符。事实上,甚至维基百科讨论页面也提到了这个定义问题(没有明显的反对声音)。
因此,如果您遵循维基百科的定义,那么是的,您的代码使用了封装(“封装类”不是我听过任何人使用这种方式的短语,我会避免它)。
如果您遵循信息隐藏和封装是同义词(或至少非常紧密地结合在一起)的思想流派,那么您的代码就没有使用封装。
请参阅维基百科有关信息隐藏的文章中的这段:
术语“封装”通常与信息隐藏互换使用。不过,并非所有人都同意两者之间的区别。人们可能会认为信息隐藏是原理,封装是技术。
a 和 b 实例变量应声明为私有。