我们可以说一个所有成员变量和方法都是公有的类就是封装类吗?

问题描述 投票:0回答:3

根据定义,Java 中的封装是将代码和数据包装到一个单元中的过程。但是如果一个类有2个成员变量和一个方法,并且变量和方法都具有公共访问修饰符,我们可以说该类是封装类吗?

例如,我们可以说下面的类是否被封装了

public class AddNumbers {

     public int a;
     public int b;

     public void add(){
          System.out.println(a+b);
     }
}
java oop encapsulation
3个回答
0
投票

是,或者不是。取决于人们如何定义“封装”。

鉴于您问题的措辞,我假设您正在使用来自维基百科的封装定义,(截至目前)内容为

在面向对象编程 (OOP) 中,封装是指将数据与操作这些数据的方法捆绑在一起,或者限制对某些对象组件的直接访问。

我不同意这个定义。或者更准确地说,我认为它不必要地区分“封装”和“数据隐藏”,这与我对日常对话中使用的术语“封装”的看法不符。事实上,甚至维基百科讨论页面也提到了这个定义问题(没有明显的反对声音)。

因此,如果您遵循维基百科的定义,那么是的,您的代码使用了封装(“封装类”不是我听过任何人使用这种方式的短语,我会避免它)。

如果您遵循信息隐藏和封装是同义词(或至少非常紧密地结合在一起)的思想流派,那么您的代码就没有使用封装。

请参阅维基百科有关信息隐藏的文章中的这段:

术语“封装”通常与信息隐藏互换使用。不过,并非所有人都同意两者之间的区别。人们可能会认为信息隐藏是原理,封装是技术。


0
投票

为了封装你的类,你需要

将类变量/属性声明为私有
  • 提供公共 get 和 set 方法来访问和更新私有变量的值
  • 你的类有公共数据,也就是说,它没有受到保护(封装),因此可以被每个人访问和修改 我推荐阅读此书以更好地理解封装

java_封装


0
投票

a 和 b 实例变量应声明为私有。

© www.soinside.com 2019 - 2024. All rights reserved.