抽象和封装都是基本的面向对象编程(OOP)概念,使您可以将现实世界的对象实现为程序和代码。虽然两者并存,但彼此之间却有很大不同。虽然每种方法都是封装,但它也是一种抽象。简单来说,当您将不同的事物放在一起创建一个实体时,实际上是在创建一个概念–抽象。尽管两者在技术上是不可分割的,但它们实际上并没有什么共同之处。几乎每一个封装都是一个抽象,因为它们都隐藏了某些东西,但是它们之间也存在相当大的差异。

什么是抽象?

抽象是一个基本的OOP概念,它只关注对象的相关数据,并隐藏所有可能无关或无关的通用或专门行为的细节。它隐藏了背景细节,并强调了要点,以减少复杂性并提高效率。基本上,抽象是用于管理复杂性的编程工具。抽象关注的是思想而非事件。它通过向用户提供功能来隐藏设计级别的细节。生成的对象也可以称为抽象。程序员确保命名实体将包含所有基本方面,并且没有不相关的方面。

以现实世界中的抽象示例为例。让我们考虑一下车辆的情况,在这种情况下就是车辆。机修工试图修理汽车,或者说是汽车的特定部分。在这里,您是用户,您不想了解汽车的细节或实际损坏的部分。实际上并不关心这些事情;您只希望车辆恢复原状,而不必担心细节。因此,实际上是通过隔离实现部分来告诉机械师您想要什么。这是抽象的。专注于最重要的事情,那就是修车,而不是专注于细节。

什么是封装?

封装是另一个OOP概念,它将数据和功能绑定到单个组件中,同时限制了对某些组件的访问。这是OOP的主要基本概念之一,它将数据和信息包装在一个单元内。用技术术语来说,封装意味着隐藏属性以保护变量免受外部访问,从而使应用程序某一部分的更改不会影响其他部分。相反,通过使信息更加开放,您将有滥用数据的风险。通过保护数据免受外界影响,它为数据提供了基本的完整性。简单来说,它隐藏了外界的多余细节。

以蓝牙鼠标为例。您只需要了解设备的行为,而无需担心实现细节,例如鼠标具有哪种传感器,是否具有无线功能等等。每个细节都描述了鼠标,但是无论细节如何,它都只是鼠标。您只需要一个接口即可使用鼠标,在这种情况下,该接口就是鼠标指针,这就是封装。

抽象与封装有什么区别
尽管两者都是与OOP相关的基本概念,并且在技术上是不可分割的,但是它们在许多方面仍然存在差异。

  • 抽象和封装的“定义”之间的差异 – 抽象是OOP的基本概念,它通过隐藏不相关的细节来强调对象的所有基本方面,以提高效率并消除复杂性。另一方面,封装是一种数据隐藏机制,它将数据和信息包装在一个胶囊中以限制来自外界的访问。
  • 抽象和封装的“功能”上的差异 – 抽象是一种数据隐藏机制,仅强调使复杂程序更简单的基本功能,而封装则是将数据和代码绑定到单个实体中的一种方法。这样做的目的是保护实现细节免受外部访问。
  • 抽象和封装的“实现”的区别 – 抽象是使用抽象类和接口实现的,而封装则使用访问修饰符的实现。五种类型的修饰符用于封装数据:私有,公共,内部,受保护的和受保护的内部。
  • 抽象和封装的“概念”上的差异 – 抽象背后的思想是关注于什么而不是如何。封装隐藏了内部机制。例如,当您开车时,您确切地知道制动踏板的作用,但是由于数据被封装,您可能不知道其背后的整个机制。
  • 抽象和封装“示例”中的差异 – 让我们以智能手机为例。我们都知道它的作用,但可能不知道它的作用。您只关心显示屏和键盘按钮,而不必担心其内部电路。在这里,智能手机是抽象的,其中封装了内部实现细节。
抽象 封装
通过隐藏不相关的细节以减少复杂性从而提高效率,从而仅处理相关的细节。 它将数据和信息绑定到一个实体中,以保护数据免受外部来源的侵害。
它指的是隐藏数据(出于演示目的不需要)的想法 它隐藏数据和代码以限制不必要的访问。
它着重于什么而不是如何 它隐藏了其工作方式的内部机制。
它在设计级别隐藏了不必要的细节 它还隐藏了实施级别上的详细信息。
信息和数据与相关数据分开 信息隐藏在内部,以供近距离访问。
它处理想法而不是事件 这个想法是保护数据免受外界干扰。
它是使用抽象类和接口实现的 使用protected, private和程序包私有的访问修饰符实现。

总结

两者都是与数据隐藏相关的OOP概念,但它们彼此之间有很大的不同。 抽象还涉及像封装一样的隐藏,但是前者隐藏了复杂性,而后者则通过控制对它们的访问来保留其封装的数据。 抽象是指通过隐藏不相关的细节来仅表示必要功能的概念,以降低应用程序的复杂性,从而提高效率。 另一方面,封装是指隐藏程序的所有内部机制的概念,以保护信息免受不必要的访问。 通过限制对其他组件的访问,它将数据和信息绑定到一个组件中。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:抽象和封装
本文链接:https://www.vsdiffer.com/vs/abstraction-vs-encapsulation.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。