抽象(abstraction)和封装(encapsulation)的区别

抽象和封装都是基本的面向对象编程(OOP)概念,允许您将真实世界的对象实现为程序和代码。虽然这两者是并行不悖的,但它们却有很大的不同。虽然每个方法都是一个封装,但它也是一个抽象。简单地说,当你把不同的东西放在一起创建一个实体时,你实际上创建了一个概念——一个抽象概念。虽然两者在技术上是不可分割的,但实际上却毫无共同之处。几乎所有的封装都是一个抽象,因为它们都隐藏了一些东西,但是它们也有各自的区别。...

抽象和封装都是基本的面向对象编程(OOP)概念,允许您将真实世界的对象实现为程序和代码。虽然这两者是并行不悖的,但它们却有很大的不同。虽然每个方法都是一个封装,但它也是一个抽象。简单地说,当你把不同的东西放在一起创建一个实体时,你实际上创建了一个概念——一个抽象概念。虽然两者在技术上是不可分割的,但实际上却毫无共同之处。几乎所有的封装都是一个抽象,因为它们都隐藏了一些东西,但是它们也有各自的区别。

什么是抽象(abstraction)?

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

让我们举一个抽象的真实例子。让我们考虑一辆车的情况,在这种情况下,它就是你的车。一个技工试图修理你的车,或者说修理你车的某个特定部分。在这里,你是用户,你不想进入你的车的细节或什么部分实际上打破了。你其实并不在乎那些事情;你只想让你的车回到原来的状态,而不用担心细节。所以,你实际上是通过分离实现部分来告诉机械师你想要什么。这是抽象。你专注于最重要的事情,那就是修车,而不是关注细节。

抽象(abstraction)和封装(encapsulation)的区别

什么是封装(encapsulation)?

封装是另一个OOP概念,它将数据和函数绑定到单个组件中,同时限制对某些组件的访问。它是OOP的主要基本概念之一,将数据和信息封装在一个单元下。从技术上讲,封装意味着隐藏属性以屏蔽外部访问变量,这样应用程序的一部分中的更改就不会影响其他部分。相反,通过使信息更加公开,您将面临数据被滥用的风险。它通过保护数据不受外界影响来提供数据的基本完整性。简单地说,它对外界隐藏了额外的细节。

以蓝牙鼠标为例。你只需要知道设备的行为,而不用担心实现细节,比如鼠标有什么样的传感器,是不是无线的等等。每一个细节都描述了鼠标,但不管细节如何,它只是一个鼠标。您只需要一个接口来使用鼠标,在本例中是鼠标指针。这是封装。

抽象和封装的区别

虽然这两个概念都是面向对象的基本概念,在技术上是不可分割的,但在很多方面还是有区别的。

  1. 抽象和封装的“定义”不同——抽象是一个基本的OOP概念,它强调对象的所有基本方面,通过隐藏不相关的细节来提高效率和消除复杂性。另一方面,封装是一种数据隐藏机制,它将数据和信息封装在一个胶囊中,以限制外界的访问。
  2. 抽象和封装的“功能”不同——抽象是一种数据隐藏机制,它只强调使复杂程序更简单的基本特性,而封装则是一种将数据和代码绑定到单个实体的方法。其思想是保护实现细节不受外部访问。
  3. 抽象和封装的“实现”不同——抽象是使用抽象类和接口实现的,而封装是使用访问修饰符实现的。有五种类型的修饰符用于封装数据:Private、Public、Internal、Protected和protectedinternal。
  4. 抽象和封装的“概念”不同——抽象背后的理念是关注什么而不是如何。封装隐藏了其内部机制。例如,当你开车时,你确切地知道刹车踏板的作用,但你可能不知道它背后的整个机制,因为数据是封装的。
  5. 抽象和封装的“示例”不同——让我们以智能**为例。你知道它做什么,但你可能不知道它是怎么做的。你只关心显示屏和键盘按钮,而不关心它的内部电路。在这里,**artphone是一个抽象,其中封装了内部实现细节。

比较表的抽象与封装

抽象 封装
它只处理相关的细节,通过隐藏不相关的细节来降低复杂性,从而提高效率。 它将数据和信息绑定到一个实体中,以保护数据不受外部来源的影响。
它指的是隐藏不需要用于表示目的的数据的思想。 它隐藏数据和代码以限制不必要的访问。
它关注的是什么而不是如何。 它隐藏了它做某事的内在机制。
它隐藏了设计层上不必要的细节。 它也隐藏了细节,但在实现级别。
信息和数据与相关数据分开。 信息隐藏在一个胶囊里,以便近距离接触。
它处理的是思想而不是事件。 这样做是为了保护数据不受外界影响。
它是使用抽象类和接口实现的。 它是使用protected、private和package private访问修饰符实现的。

总结

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

  • 发表于 2021-06-25 03:41
  • 阅读 ( 718 )
  • 分类:IT

你可能感兴趣的文章

游离神经末梢(free nerve endings)和封装的(encapsulated)的区别

...嘴唇。此外,它们对轻触有反应。 什么是包裹神经末梢(encapsulated nerve endings)? 与游离神经末梢不同,包裹的神经末梢不包含神经传递的开放端。因此,与游离神经末梢相比,包裹神经末梢的敏感性较低。一些机械感受器有包...

  • 发布于 2020-10-16 00:28
  • 阅读 ( 493 )

封装(encapsulation)和脱胶囊(decapsulation)的区别

.... 并列比较-以表格形式封装与去封装 6. 摘要 什么是封装(encapsulation)? 网络模型用于标准化网络通信。当从一个位置向另一个位置发送数据时,数据会经过许多层。TCP/IP模型有四层。它们是应用层、传输层、互联网层和网络接入...

  • 发布于 2020-10-19 15:30
  • 阅读 ( 476 )

数据隐藏(data hiding)和封装(encapsulation)的区别

数据隐藏(data hiding)和封装(encapsulation)的区别 面向对象程序设计(OOP)是程序设计的一个主要范式。它有助于使用对象开发程序或软件。对象是使用蓝图创建的。它被称为一个类。类由应该包含在对象中的属性和行为组成。类...

  • 发布于 2020-10-24 02:51
  • 阅读 ( 443 )

面向对象编程中抽象的初学者指南

... 什么是抽象什么(abstract and what)? ...

  • 发布于 2021-03-30 04:01
  • 阅读 ( 259 )

抽象(abstraction)和封装(encapsulation)的区别

...藏了一些东西,但是它们也有各自的区别。 什么是抽象(abstraction)? 抽象是一个基本的OOP概念,它只关注对象的相关数据,隐藏所有不相关的细节,这些细节可能是通用的,也可能不是专用的行为。它隐藏了背景细节,强调了减...

  • 发布于 2021-06-25 03:41
  • 阅读 ( 718 )

抽象类(abstract class)和java接口(interface in java)的区别

...们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 302 )

混凝土(concrete)和抽象名词(abstract nouns)的区别

...ollective nouns, countable and uncountable nouns. 什么是抽象名词(an abstract noun)? 抽象名词是具体名词的对立面。抽象名词指思想、信仰、概念或事物的状态。它们指的是不能通过五种感官来体验的事物:视觉、声音、嗅觉、触觉和味觉。...

  • 发布于 2021-06-27 06:18
  • 阅读 ( 897 )

抽象类(abstract class)和java接口(interface in java)的区别

...键术语 抽象类、接口、多重继承 什么是java中的抽象类(abstract class in java)? 用abstract关键字声明的类称为抽象类。抽象类既可以有抽象方法,也可以有非抽象方法。类可以扩展抽象类并实现抽象类的抽象方法。不能从抽象类创...

  • 发布于 2021-07-01 01:29
  • 阅读 ( 277 )

工厂模式(factory pattern)和抽象工厂模式(abstract factory pattern)的区别

...ShapeFactory以获取所需的对象类型。 什么是抽象工厂模式(abstract factory pattern)? 抽象工厂模式使用超级工厂并创建其他工厂。它也被称为工厂的工厂。在这种模式中,接口创建相关对象的工厂,而不显式指定它们的类。换言之,...

  • 发布于 2021-07-01 06:13
  • 阅读 ( 187 )

数据隐藏(data hiding)和抽象(abstraction)的区别

...总的来说,数据隐藏有助于保护类的成员。 什么是抽象(abstraction)? 抽象隐藏了内部细节,只向用户显示功能。换句话说,它隐藏了实现细节,并向外界展示了功能。例如,假设一个真实世界的应用程序,例如移动电话。用户不...

  • 发布于 2021-07-01 13:14
  • 阅读 ( 309 )
5米诺
5米诺

0 篇文章

相关推荐