抽象与封装:抽象与封装之间的区别

已发表: 2021-02-09

目录

介绍

每个程序员都热衷于开发整洁干净的代码,他必须使用来自盔甲或 OOP 概念的适当武器。 使用适当的 OOP 概念将降低复杂性,并且对象的实体与代码的其他部分分离。 此外,它提高了可读性,并且可以在需要时轻松修改。

此外,像继承这样的 OOP 概念提供了代码的可扩展性。 这些概念有助于定义抽象类、更新以前实现的代码、实现现实生活场景的应用程序。

抽象、封装是面向对象编程的基本概念。 每个程序员都实现了这些概念,以获得干净且可重用的代码。 但这两个概念之间存在相当多的差异,让我们在本文中了解它们。

首先,让我们快速浏览一下抽象和封装的概念。

抽象

抽象是隐藏不必要数据并仅显示相关数据的过程。 在数据的海洋中,我们只是保持一些数据对用户的透明性。 面向对象编程中的这一重要概念将降低代码的复杂性并增加可读性。

例如,假设我们被分配了一个任务来创建一个在线课程注册门户,我们可用的数据字段是{姓名、年龄、当前职业、大学名称、课程名称、付款方式、兄弟姐妹的姓名、婚姻状况、车辆数字}。

在查看了可用的数据字段后,我们会了解到某些字段对于课程注册门户来说不是必需的,例如 {兄弟姐妹的姓名、婚姻状况、车辆编号}等字段对于课程注册来说不是必需的。

因此,我们需要具体并仅选择相关数据。 现在必要的字段是{姓名、年龄、当前职业、大学名称、课程名称、付款方式},这是 OOP 中的一个抽象示例,因为我们已经从整个数据中保护了选定的信息。

现在,这些新数据还可以用于其他一些应用程序,例如课程状态跟踪器、课程完成记录等。我们可以使用相同的数据而无需任何更改。

许多人经常对抽象和抽象类感到困惑,那么它们是否相关?

抽象类与抽象不同,创建抽象类/方法的目的是在子类或子类中实现它们。 而抽象只是隐藏数据,并通过使用访问说明符(如 public、protected、private)仅显示相关数据。

封装

封装是将数据成员与成员变量绑定。 这将避免直接访问变量,因为直接访问变量可能会侵犯隐私,并且无法隐藏实现。

我们可能已经经历过一些类中的经典方法,例如 set 和 get,其中 set 方法用于更新或分配变量的值,而 get 方法用于读取或检索变量的值。 在这里,我们可以使用该类的对象直接访问变量,但是如果我们想将变量设为私有,那么我们应该使用这些设置和获取方法。

这个概念很简单,我们将 set 和 get 方法公开,变量是私有的。 所以变量只能通过类外的公共方法访问,因为私有对象不能在类外访问,但在类内可以访问。 这种将变量与方法绑定或捆绑的概念称为封装。

让我们看一个简单的 java 程序来更好地理解这一点。

课程注册{
私人字符串学生姓名;
私人字符串课程名称;
公共字符串getName (){
返回学生姓名;
}
public void setName (字符串名称){
这个.student_name=name;
}
公共字符串getCourse (){
返回课程名称;
}
public void setCourse (字符串课程){
这个.course_name=课程;
}
}
公共u pGrad {
公共静态无效主要(字符串[]参数){
课程注册 c=课程注册();
c.setName( “mithun” );
c.setCourse( “数据科学” );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

在上面的代码中,我们创建了一个类 CourseRegistration,其中成员变量 student name 和 course name 是私有的,但是我们在另一个类中使用 set name 和 get name 函数访问它。 在主类中,我们创建了 CourseRegistration 类型的对象。 我们正在使用 set 和 get 函数初始化和访问成员变量。

现在我们已经了解了抽象的定义和示例,让我们讨论抽象和封装之间的优点和区别。

抽象的优点

  • 由于只有相关数据对用户可见,因此维护了数据的隐私。
  • 降低代码的复杂性并提高可读性。
  • 实现抽象的类可以通过继承它们作为父类,从而提高可重用性,减少重复。

封装的优点

  • 它有助于将数据成员与成员函数绑定。
  • 提高了错误分析的效率和用户友好性。
  • 为程序员控制数据的可访问性和透明度提供了灵活性。

抽象与封装之间的区别

定义

  • 抽象隐藏了代码的细节和实现。
  • 封装是隐藏数据并控制代码的可见性。

阶段

  • 抽象是一个设计级别的过程。
  • 封装是一个实现级别的过程。

关键能力

  • 抽象关心的是类实例可以做什么,而不是类的实现。
  • 封装有助于数据绑定和控制保持数据的透明度。

用例

  • 抽象是一个设计级别的过程,用于降低项目设计阶段的复杂性。
  • 封装是一个实施级别的过程,它用于在项目实施阶段提供隐私并保持对数据透明度的控制。

如何实施

  • 抽象可以使用java中的类和接口来实现。
  • 封装也使用类实现,并且通过指定访问说明符(如受保护的、公共的、私有的)来获得对数据隐私的控制。

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

我们已经了解了 OOP 概念的重要性,理解了抽象和封装的定义。 浏览了抽象和封装的示例。 我们还了解了使用 OOP 概念(如抽象和封装)的优势。 最后,我们已经了解了抽象和封装之间的区别。

现在您已经了解了抽象、封装的定义和实现,请尝试在您的代码中实现它们,并尝试降低您从现在开始编写的代码的复杂性!

如果您有兴趣了解有关 Java、全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训,9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

什么是面向对象编程中的抽象?

面向对象编程中的抽象是一种通过构建对象来表示有关问题的高级信息的技术。 抽象是在接口的帮助下实现的,接口的实现是使用实际代码完成的。 抽象是通过为消费模块提供不同的接口来实现的,具体细节对消费模块隐藏。 实现抽象是为了隐藏底层细节的实现细节。 它还用于隐藏复杂的细节并为用户提供更简单的界面。

类和对象在编程中是如何工作的?

类和对象是所有面向对象编程语言中使用的两个主要概念。 每个类都包含一组可以使用和操作的变量和方法。 在面向对象的编程语言中,程序中的所有对象都有特定的类型,对象的变量和方法只能由相同类型的方法操作。 在大多数面向对象的语言中,类用于创建对象,反之亦然。 面向对象的程序由对象、过程和数据类型组成。 面向对象程序中的所有内容,包括数据和代码,都是对象。

封装和抽象有什么区别?

抽象是一种去除代码中不必要的细节并专注于相关部分的方法。 例如,我们可以编写一个“乘法”函数并用它来将任意数与任意数相乘,而不是编写一个将两个数相乘的函数。 抽象是表示某些特定数据的一种方式。 封装是一种隐藏事物复杂性并仅公开您希望公开的部分的方法。 例如,如果您有一个类具有一个或多个用于存储数据的私有字段,那么您就处于封装状态。 该类包含数据并具有公开公共数据的方法。