继承 Java (附示例)

什么是继承?

遗产 是一种一个类获得另一个类的属性的机制。例如,孩子继承了父母的特征。通过继承,我们可以重用现有类的字段和方法。因此,继承促进了可重用性,是 OOP 的一个重要概念。

什么是继承 Java?

Java 遗产 是一种让一个类获得另一个类的属性的机制。在 Java,当两个类之间存在“Is-A”关系时,我们使用继承。父类称为超类,继承的类称为子类。关键字 extends 供子类继承超类的特性。继承很重要,因为它可以提高代码的可重用性。

Java 继承语法:

class subClass extends superClass  
{  
   //methods and fields  
} 

继承类型 Java

以下是不同类型的继承 Java:

  1. 单继承
  2. 多重继承
  3. 多级继承
  4. 层次继承
  5. 混合继承

1.单一继承:

在单一继承中,一个类扩展另一个类(仅限一个类)。

单一继承 Java
单继承

在上图中,类 B 仅扩展了类 A。类 A 是超类,类 B 是子类。

2.多重继承:

多重继承是 Java 一个类扩展多个类的类型。 Java 不支持多重继承。

多重继承 Java
Java 多重继承

根据上图,类 C 扩展了类 A 和类 B。

3.多级继承:

在多级继承中,一个类可以从派生类继承。因此,派生类将成为新类的基类。

多级继承 Java
多级继承

如图所示,C 类是 B 类的子类,而 B 类是 A 类的子类。

4.分层继承:

在层次继承中,一个类被许多子类继承。


层次继承 Java
层次继承

如上例所示,类 B、类 C 和类 D 继承了同一个类 A。

5.混合继承:

混合继承是 Java 它是单继承和多继承的组合。


混合继承
混合继承

按照上面的例子,A​​ 类的所有公共和受保护成员都被继承到 D 类中,首先通过 B 类,其次通过 C 类。

请注意: Java 不支持混合/多重继承

继承 Java 例如:

以下是继承的示例 Java:


示例 Java 遗产
Java 继承示例

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

超级关键字

super 关键字类似于“this”关键字。关键字 super 可用于访问父类的任何数据成员或方法。Super 关键字可用于 变量、方法和构造函数级别。

语法:

super.<method-name>();

还检查: - this 关键字 Java:什么是以及如何使用示例

通过示例学习 OOP 中的继承

考虑一下来自 前面的例子。

我们应该开设两种不同类型的账户,一种用于储蓄,另一种用于支票(也称为活期)。

OOP 中的继承

让我们比较一下,研究一下如何从 结构化和面向对象的编程观点。

结构方法:在结构化编程中,我们将创建两个函数 -

  1. 一个要撤回
  2. 另一个用于存款操作。

因为这些功能的运作在各个账户中保持不变。

OOP 中的继承

OOP 的方法:使用 面向对象 编程方法。我们将创建两个类。

  • 每个都具有存款和取款功能的实现。
  • 这将会造成多余的额外工作。

OOP 中的继承

软件中的变更请求

现在,软件行业中常见的需求规范发生了变化。您应该添加具有透支功能的特权银行帐户功能。背景是,透支是一种您可以提取超过帐户余额的金额的功能。

软件中的变更请求

结构方法: 使用函数式方法,我必须修改我的 withdraw 函数,该函数已经过测试并已建立基准。并添加如下所示的方法以满足新要求。

软件中的变更请求

OOP 的方法: 使用 OOP 方法,你只需要编写一个具有 withdraw 函数独特实现的新类。我们从未触碰过被测试的代码片段。

软件中的变更请求

另一个变更请求

如果要求进一步发生变化怎么办?比如添加信用卡账户,并有自己独特的存款要求.

软件需求中的多个变更请求

结构方法: 使用结构化方法,您必须再次更改经过测试的存款代码。

软件中多变更请求的结构化方法

OOP 的方法:但是使用面向对象方法,您只需创建一个具有其独特的存款方法实现的新类(下图中以红色突出显示)。因此,尽管结构化编程最初看起来是一种简单的方法,但从长远来看,OOP 更胜一筹。

OOP 处理多重变更请求的方法

OOP 中继承的优点

但有人可能会说,在所有类别中,都有重复的代码片段。

为了解决这个问题,您可以创建一个父类,例如“帐户”,并实现相同的存款和取款功能。并使子类继承“帐户”类。这样它们就可以访问帐户类中的取款和存款功能。这些功能不需要单独实现。这是 Java 中的继承。 .

OOP 中继承的优点

OOP 中继承的优点