当前位置: 首页 > 知识库问答 >
问题:

封装与抽象的区别

勾长卿
2023-03-14

我今天有个面试。我有一个来自OOP的问题,关于封装之间的区别

我告诉她,封装基本上是绑定数据成员

在提出这个问题之前,我阅读了StackOverFlow上的其他线程,了解这两个OOPs概念之间的区别。但我发现自己无法说服面试官。

有人能举个最简单的例子来证明吗?

共有3个答案

索曾琪
2023-03-14

封装:将代码和数据封装到一个单元中。Class是封装的一个例子,因为它封装了方法和属性。

抽象:隐藏内部细节,只显示功能。抽象关注对象做了什么,而不是它是如何做的。它提供了类的广义视图。

int number = 5;
string aStringNumber = number.ToString(); 

这里,ToString()是抽象。这个机制是如何将number变量转换为字符串并初始化为aStringNumber的。

让我们以一个真实的计算器为例。封装是内部电路、电池等的组合,使其成为一个计算器。抽象是指为操作它而提供的不同按钮,如on-off、clear和其他按钮。

祁远
2023-03-14

这张图片很好地总结了两者之间的差异:

来源这里

蒋高扬
2023-03-14

封装隐藏了在类中经常更改的变量或某些实现,以防止外部人员直接访问它。他们必须通过getter和setter方法访问它。

抽象也用来隐藏某些东西,但程度更高(类、接口)。使用抽象类(或接口)的客户机不关心它是什么,他们只需要知道它能做什么。

 类似资料:
  • 问题内容: 封装和抽象之间的确切区别是什么? 问题答案: 这里的大多数答案都集中在OOP上,但封装要早得多: 每个函数都是一个封装 ; 用伪代码: 这里,封装了平面中两点之间的(欧几里得)距离的计算:隐藏了实现细节。这是封装,纯净而简单。 抽象是泛化的过程:采取具体的实现方式并将其应用于不同的(尽管有些相关)数据类型。抽象的经典示例是C的qsort数据排序功能: 关于的事情是,它不关心排序的数据-

  • Truffle provides contract abstractions for interacting with your contracts. Skip ahead to the api section for a list of contract methods. 使用方法 To obtain a contract abstraction you can require it with

  • 问题内容: Java中的封装和抽象之间到底有什么区别?任何简短的例子也将不胜感激。 问题答案: 抽象和封装是两个很好的味道,它们在一起味道很好。 封装 可以最大程度地减少向代码用户展示的内容。该“用户”可以是您代码的其余部分,也可以是使用您发布的代码的任何人。 封装有一定的好处: 代码的用户不依赖于程序中可能更改的部分。当您更改程序时,他们不必更改代码 您可以更好地控制代码和状态在程序生命周期中的

  • 在采访中,我被要求解释抽象和封装之间的区别。我的回答是大致相同的 > 抽象允许我们以最简单的方式表示复杂的现实世界。它是识别一个对象应该具备的相关品质和行为的过程;换句话说,代表必要的特征而不代表背景细节。 封装是一个从外部真实世界隐藏对象所有内部细节的过程。“封装”这个词,就像“封装”成一个“胶囊”。它限制客户端查看实现抽象行为的内部视图。 我想通过以上的回答,面试官确信了这一点,但随后我被问到

  • 以封装为例,我可以想到用户和手机之间的交互。用户不需要知道手机的内部工作情况就可以进行操作,因此这称为抽象。但是封装在这个例子中的什么地方呢?有人能解释一下吗?

  • 问题内容: 以封装为例,我可以想到用户与手机之间的交互。用户不需要知道手机的内部工作即可操作,因此这称为抽象。但是封装适合本例吗?有人可以对此进行说明吗? 问题答案: 封装是一种实现“信息隐藏”的方法,因此,按照您的示例,您不需要“知道移动电话的内部工作原理”。您有一个界面来使用设备行为而无需了解实施细节。 另一方面,抽象可以解释为对不同对象使用相同接口的能力。可以存在同一接口的不同实现。细节通过