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

抽象是一个收集关键信息的过程,它将为构建复杂系统奠定基础。封装是一个开发复杂系统来管理最终用户的过程,而不必担心其内部的复杂性。抽象和封装的区别在于,抽象侧重于识别构建系统的基本组件,而封装侧重于隐藏系统的内部复杂性。...

抽象是一个收集关键信息的过程,它将为构建复杂系统奠定基础。封装是一个开发复杂系统来管理最终用户的过程,而不必担心其内部的复杂性。抽象和封装的区别在于,抽象侧重于识别构建系统的基本组件,而封装侧重于隐藏系统的内部复杂性。

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

对比图

基本 抽象 封装
定义 发展不系统所需的要素。 Encapsulation is a process of developing a complex system 
成就 通过封装实现。 通过使aclass成员成为私有实现的。
聚焦 重点是应该做什么 重点是如何做到这一点。
应用 在设计阶段。 在实施阶段。
     
例子 **的GUI,它有一些图标要点击,点击后执行特定的功能。 单击图标时,最终用户对其实现细节一无所知

什么是抽象(abstraction)?

抽象是一种提取创建系统的关键元素的机制,没有实现细节。事实上,我们必须只专注于要做什么,而不是如何去做。抽象是一个思维过程,它在设计层面解决问题。

层次分类帮助我们处理复杂的抽象。它使我们能够将一个复杂的系统分解成可管理的部分,并生成一个分层的语义。此外,它是一个推广。

例子

让我们举一个汽车的例子,它是由许多子系统组成的,比如发动机、刹车、照明、音响系统、椅子等等。刹车是自行车的一个子系统,可以进一步分为前轮刹车和后轮刹车,但一般来说,我们把所有的子系统都看作刹车。因此,我们必须通过层次分类来管理这个复杂的系统,这有助于我们找出开发一个系统所需要的关键要素。

因此,抽象只是概括了构成一个系统所必需的要素,即只挑选重要的要素。

什么是封装(encapsulation)?

封装是面向对象编程的重要特征。它是一种将代码和数据绑定在一起并保护它们不受外部干扰的机制。也就是说,封装隐藏了系统的复杂性,因为这里的关键字是数据隐藏。它类似于protectivewrapper,它隐藏类中的代码和数据,由在类外部定义的另一个代码和不是类成员的成员函数/方法获取。

当在类中链接对该数据进行操作的代码和数据时,将创建此类的对象。对项元素的访问受到定义良好的接口(称为访问说明符)的限制。在爪哇和C++中有三个访问说明符,公共的、私有的、安全的。

封装尤其是通过将对数据进行操作的代码和数据作为私有的来实现的。类的私有成员无法从类外部定义的代码访问。它有助于防止数据的误用,同时也隐藏了代码的复杂性。

例子

让我们举一个**的例子。在**中,你可以执行许多功能,如点击图片、录制视频/音频、发送信息、访问网络等等。你认为这些是**的特性。但是,在使用这些程序之前,最终用户不需要了解这些功能的内部复杂性,也不需要更改任何功能的功能。

因此,通过这种方式,封装隐藏了复杂性并防止了数据的误用。

在抽象之间(s between abstraction)和封装(encapsulation)的区别

  1. 抽象集中在构建系统所需的组件上,而封装则侧重于隐藏系统的复杂性。
  2. 抽象是在系统设计阶段完成的,当系统实现时,完成封装。
  3. 摘要主要动机是,在封装系统的主要动机下,如何构建系统,是构建系统的主要动机。
  4. 抽象是通过封装实现的,而封装是通过使系统元素私有来实现的。

结论

抽象和封装都是面向对象的重要特性。一个伟大的封装可以实现一个奇妙的抽象。

  • 发表于 2021-07-08 07:25
  • 阅读 ( 164 )
  • 分类:IT

你可能感兴趣的文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

抽象类(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
  • 阅读 ( 896 )

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

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

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

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

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

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

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

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

  • 发布于 2021-07-01 13:14
  • 阅读 ( 308 )
xer5105339
xer5105339

0 篇文章

相关推荐