封装是信息隐藏还是导致信息隐藏?
正如我们所说,封装将数据和函数绑定在一个实体中,因此它为我们提供了对数据流的控制,我们只能通过一些定义明确的函数来访问实体的数据。因此,当我们说封装导致抽象或信息隐藏时,这意味着它让我们知道要隐藏哪些数据以及向用户显示哪些数据......因为用户无法访问的数据可以对他们隐藏,因此封装提供了我们一种技术来找出要隐藏哪些数据以及应该看到哪些数据......这个概念是否正确?
信息隐藏和抽象有什么区别?
封装是信息隐藏还是导致信息隐藏?
正如我们所说,封装将数据和函数绑定在一个实体中,因此它为我们提供了对数据流的控制,我们只能通过一些定义明确的函数来访问实体的数据。因此,当我们说封装导致抽象或信息隐藏时,这意味着它让我们知道要隐藏哪些数据以及向用户显示哪些数据......因为用户无法访问的数据可以对他们隐藏,因此封装提供了我们一种技术来找出要隐藏哪些数据以及应该看到哪些数据......这个概念是否正确?
信息隐藏和抽象有什么区别?
这个的可能重复
public class Guest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
看上面的代码,我们已经封装了String名称,我们通过公共方法提供了对它的访问。
假设我们创建了一个名为 guest 的 Guest 对象。那么以下将是非法的。
System.out.println("Guests name : "guest.name);
只能通过公共方法访问。
guest.getName();
封装的好处:
类的字段可以设置为只读或只写。
一个类可以完全控制其字段中存储的内容。
类的用户不知道该类如何存储其数据。一个类可以改变一个字段的数据类型,并且类的用户不需要改变他们的任何代码。
封装意味着隐藏实现
抽象意味着提供关于实现的蓝图
数据隐藏意味着控制对 DataMember 或属性的访问
信息是一个更笼统的术语,因此,我认为说封装是信息隐藏是不合适的。我会说封装是数据隐藏。
封装意味着...
将对象的状态和行为(在该状态上运行)组合在一个单元中。这紧密地模仿了现实世界的对象。
通过提供定义明确的受控访问(通过行为)来隐藏和保护对象的状态免受意外的外部更改。
在 Java 中,定义可以详细说明为...
在 Java 中,类和枚举是实现封装的单个单元。状态是使用变量(基元、对对象的引用)定义的,行为是使用方法定义的。
数据隐藏是通过对变量使用私有访问说明符来实现的(这样任何人都无法从外部访问它们)。
受控访问是通过提供 Getter / Setter 和/或业务逻辑方法来实现的。Setter 和其他影响状态的方法都应该进行边界条件检查,以保持状态在逻辑上正确。
封装讨论将数据隐藏到某物中并为其命名(类中的私有数据成员 - Car)以及与它绑定的行为方法,这些方法将改变或提供对这些数据变量的访问。
抽象以抽象的术语提供客户的视角。作为一个概念或想法。Car 是具体的实体,作为 Drivable,Trackable(具有位置并且可以被追踪)可以是 Car 的抽象,用于不同的客户端。
您可以在此处查看抽象和封装的一些真实示例。
封装 - 工作完成,门永久关闭。通过方法名获取工作福利。抽象 - 工作开始,门暂时关闭。使用覆盖键打开和更改工作。
封装是一种用于隐藏对象属性和行为的技术。
抽象是指表示基本特征。
这两个 OOP 原则都涉及信息隐藏,但有所不同。
封装涉及限制对类变量的直接访问,方法是将它们设为私有并让公共 getter 和 setter 访问它们。目的:这样做是为了使类的成员不会被外部意外操纵(并因此被破坏)。
抽象涉及仅向调用者公开相关细节,同时隐藏其他细节(实现细节)。客户不需要担心以后可能会改变的实现。例子:调用者会调用List的add方法,今天的实现可能是ArrayList,明天可能会变成LinkedList。目的:这提供了明天可以更改实施的灵活性。此外,它还简化了设计。