每个程序员都应该知道的 OOP 概念和示例

已发表: 2021-02-26

在本文中,我们将介绍面向对象编程的基本概念,并讨论常用术语:抽象、封装、继承和多态。

首先,OOP 是一种编程方法,它要求程序员创建对象并在整个程序中在需要此类对象进行操作的函数内使用它们。 OOPs 概念在 java 中广泛使用的原因是它允许代码的可重用性,同时保持安全性。

在讨论面向对象编程的四大支柱之前,让我们先熟悉一下我们在使用任何面向对象语言时经常听到的通用术语:Java、python、c++。

目录

班级

类是对象的集合,它定义了一组特定类型的所有对象共有的属性。 它也可以称为创建对象的蓝图。 一个类需要以下组件:

类名:给以大写字母开头的类的名称。

修饰符:基于类修饰符的功能可以是公共的、私有的或默认的。

Body 类体包含类中存在的对象的所有代码。 这可能包括声明任何变量或创建任何包含对象功能的构造函数或方法。

目的

一个对象被定义为一个类的实例并包含现实生活中的实体。 例如,对于一个名为 Animals 的类,它的对象将是猫、狗、大象等。 每个对象都有自己的身份、属性和行为。 下面的代码描述了在 Java 语言中编程时类、对象和方法的使用。

方法

方法在类中定义,用于执行特定功能。 该方法可能包含也可能不包含输入参数。 下面的代码描述了在 Java 语言中编程时类、对象和方法的使用。

在上面的代码中,Player 是我们类的名称,而 runs 是传递给 Batsman 方法的参数,当通过名为 myobj 的对象调用时,该参数返回他的得分。

访问修饰符

Java 中的访问修饰符定义方法或构造函数或类的可访问性或范围。 四种类型的访问修饰符是:

  1. Public 在一个类中编写的代码可供其他类访问。
  2. Private 编写的代码只能在该特定类中访问。
  3. 默认值编写代码可在同一个包中访问。
  4. 受保护代码可在包内访问,也可通过子类访问。 在没有子类的情况下,无法访问代码。

现在让我们继续讨论面向对象编程的症结所在。

遗产

术语继承是指将一个类的属性继承到另一个类。 属性是指父类的属性和方法。 父类是其属性需要被其他类继承的类。 继承父类属性的类称为子类或子类。 为了将父类的属性继承到子类中,使用了一个叫做extends的关键字

在上面的示例中,Sponsor 是父类,所有者是它的属性。 我们创建了一个名为 Team 的子类,它继承了父类 Sponsor。 我们创建了一个可以访问父类属性的 Team 对象。 上述代码的输出是:

多态性

顾名思义,多态是变量或函数以多种形式存在的能力。 多态性允许程序员使用相同的变量或函数来执行不同的任务。 现实生活中的多态性示例将考虑一个开放的地面,现在该地面可用于进行运动。

此外,它还可用于举办婚礼和音乐会。 最后,同一块地面可用于停放车辆。 由此,我们可以推断出单个变量可以根据其用途有多种实现。

多态性我们通常会遇到两个术语,即方法重载方法覆盖

方法重载中,可以以多种方式使用单个方法并执行不同的功能。 这些方法将具有相同的名称,但可以使用不同的参数作为输入。

Method Overriding中,父类的方法可以被子类覆盖。 有了这个,相同的方法在被父类和子类调用时可以执行不同的操作。

多态性的一个例子如下所示:

在此示例中,使用相同的方法我们可以执行多个任务。 同样的方法 Voice 在 Bird 中使用时会输出“Turr Turr”,在 Duck 中使用时会输出“Quack Quack”。 输出的快照如下所示 -

抽象

抽象是向用户隐藏某些数据并仅向他们显示所需信息的过程。 例如,在驾驶汽车时,我们并不关心内部功能或机制。 向我们展示的是汽车的行驶速度和可用的汽油升数。 所有其他边缘化数据都不会显示给驾驶员。

abstract 关键字用于执行抽象时的方法和类。 对于抽象类,我们不能创建对象,而抽象方法不应该包含主体。 如果违反了这两个规则中的任何一个,则输出将生成错误。

在这里,我们创建了一个继承自主类 Bird 的子类 Duck 的对象。 输出如下所示:

封装

封装是将代码和数据绑定到一个单元中的过程。 在这里,一个类的变量对其他类是隐藏的(通过使用关键字private ),但只能通过成员函数访问。 Setter 和 getter 函数用于访问抽象类的私有变量。

到目前为止,我们已经涵盖了与使用 Java 进行面向对象编程相关的所有内容。 在结束之前,让我们看一下 OOP 概念的一些优点。

  1. 代码可以很容易地被重用,因此为代码的开发节省了大量的时间和成本。
  2. 它有助于以结构良好的方式设计代码,因此任何新程序员都不必花费很长时间来理解代码。
  3. 除了帮助用户有效地编写代码外,它还确保安全性不受影响。

结帐: OOP 面试问题和答案

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

结论

总而言之,在本博客中,我们介绍了 OOP 的基本概念。 这些概念广泛用于工业和其他应用。 为了成为一名熟练的程序员,应该对这些概念有扎实的掌握。 在即将发布的博客中,我们将揭示其他几个基本的编程概念,这些概念将帮助您发展该领域的专业知识。

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

什么是阶乘?

阶乘是一种数学运算,它计算给定数字及其以下所有数字的乘积。 阶乘是表示一个数字乘以多少次的乘积。 比如5的阶乘是5x4x3x2x1,等于120,1的阶乘是1,0的阶乘也是1那应该在你的手上。

如何编写阶乘递归程序?

数 n 的阶乘定义为 n! = 1 × 2 × 3 × 4 × … × n。 5 的阶乘是 120。阶乘函数定义为 factorial(5) = 120。递归函数是调用自身的函数。 这是递归样式 factorial(n) = n * factorial(n - 1) 中的阶乘函数示例。 编写阶乘递归程序非常简单,代码与迭代版本非常相似。 为了编写迭代版本,我们使用一个名为 n 的变量并将其加一,然后将其与名为 prod 的变量相乘,该变量跟踪 n 的连续值。 输出值也存储在名为 prod 的变量中。 在递归版本中,您仍然使用一个名为 n 的变量。 但是,您不需要变量来存储 prod 的值,您可以直接从函数中返回 prod。

什么是编程中的递归?

递归这个词来源于拉丁词recurrere,意思是返回。 在大多数编程语言中,调用自身的函数称为递归。 这个循环过程一直持续到达到基本情况,这在任何递归函数中都没有定义。 递归是一种以结构化和有组织的方式解决问题的有效技术。 这是一个很好的编程策略。 例如,斐波那契数列问题、阶乘问题等可以通过迭代和递归的方式解决。