【问题标题】:encapsulation and abstraction OOPs concept封装和抽象 OOPs 概念
【发布时间】:2011-04-23 21:08:58
【问题描述】:

封装信息隐藏还是它导致信息隐藏??

正如我们所说,封装将数据和函数绑定在一个实体中,因此它为我们提供了对数据流的控制,我们只能通过一些定义明确的函数来访问实体的数据。因此,当我们说封装导致抽象或信息隐藏时,这意味着它让我们知道要隐藏哪些数据以及向用户显示哪些数据......因为用户无法访问的数据可以对他们隐藏,因此封装提供了我们一种技术来找出要隐藏哪些数据以及应该看到哪些数据......这个概念是否正确?

信息隐藏和抽象有什么区别??

【问题讨论】:

标签: encapsulation abstraction concept oop


【解决方案1】:

这两个 OOP 原则都涉及信息隐藏,但有所不同。

封装涉及限制对类变量的直接访问,方法是将它们设为私有并让公共 getter 和 setter 访问它们。 目的:这样做是为了防止类的成员被外部意外操纵(从而损坏)。

抽象涉及仅向调用者公开相关细节,同时隐藏其他细节(实现细节)。客户不需要担心以后可能会改变的实现。例子:调用者会调用List的add方法,今天的实现可能是ArrayList,明天可能会变成LinkedList。 目的:这提供了明天可以更改实施的灵活性。此外,它还简化了设计。

【讨论】:

    【解决方案2】:

    封装 - 工作完成,门永久关闭。通过方法名获取工作福利。 抽象 - 工作开始,门暂时关闭。使用覆盖键打开和更改工作。

    【讨论】:

      【解决方案3】:

      封装是一种用于隐藏对象属性和行为的技术。

      抽象是指表示基本特征。

      【讨论】:

        【解决方案4】:

        封装涉及将数据隐藏到某物中并为其命名(类中的私有数据成员 - Car)以及与它绑定的行为方法,这些方法将改变或提供对这些数据变量的访问。

        抽象以抽象的术语提供客户的视角。作为一个概念或想法。 Car 是具体的实体,作为 Drivable 和 Trackable(它有位置并且可以被追踪)可以是不同客户的 Car 的抽象。

        你可以查看一些真实的生活examples of AbstractionEncapsulation here

        【讨论】:

          【解决方案5】:

          信息是一个更笼统的术语,因此,我认为说封装是信息隐藏是不恰当的。 我会说封装是数据隐藏

          封装意味着...

          • 将对象的状态和行为(在该状态上运行)组合在一个单元中。 这与现实世界的对象非常相似。

          • 通过提供明确定义的受控访问(通过行为)来隐藏和保护对象的状态,避免意外的外部更改。

          在 Java 中,定义可以详细说明为 ...

          • 在 Java 中,ClassesEnums 是实现封装的单个单元。状态使用变量(基元、对象引用)定义,行为使用方法定义。

          • 数据隐藏是通过对变量使用private访问说明符实现的(这样任何人都无法从外部访问它们)。

          • 受控访问是通过提供 Getter / Setter 和/或业务逻辑方法来实现的。 Setter 和其他影响状态的方法都应该进行边界条件检查,以保持状态在逻辑上正确。

          【讨论】:

            【解决方案6】:

            封装意味着隐藏实现

            抽象意味着提供关于实现的蓝图

            数据隐藏意味着控制对 DataMember 或属性的访问

            【讨论】:

            • 您能否提供更多信息。尝试更广泛地回答问题
            【解决方案7】:

            this 可能重复

            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();
            

            封装的好处:

            1. 可以制作类的字段 只读或只写。

            2. 一个类可以完全控制 存储在其字段中的内容。

            3. 一个类的用户不知道如何 该类存储其数据。一类 可以更改字段的数据类型, 并且该类的用户不需要 更改他们的任何代码。

            【讨论】:

            • 信息不是很清楚...所以我只想了解更多详情
            • 在信息隐藏和抽象的上下文中......以及是否封装导致或它本身是信息隐藏
            • 封装不是信息隐藏。封装是为了限制对实例变量的直接访问。信息不会被隐藏,而是通过称为封装的公共方法提供。
            • 还有什么信息隐藏和抽象的区别也不清楚??
            • 抽象意味着隐藏实现特定的细节,而不是信息隐藏。现在明白了吗?
            猜你喜欢
            • 2020-02-05
            • 1970-01-01
            • 1970-01-01
            • 2018-09-20
            • 2013-10-17
            • 2020-02-05
            • 2016-05-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多