Java OOP 中的继承:通过示例学习所有类型
什么是继承?
继承 是一种机制,其中一个类获得另一个类的属性。例如,孩子继承了他/她父母的特征。通过继承,我们可以重用现有类的字段和方法。因此,继承促进了可重用性,是 OOP 的一个重要概念。
在本教程中,您将学习-
- 继承类型
- Java 中的继承
- Java 继承示例
- 超级关键字
- 通过示例了解 OOP 中的继承
继承类型
以下是 Java 中不同类型的继承:
单继承:
在单一继承中,一个类扩展了另一个类(仅一个类)。
<中心>
<图>
在上图中,B 类只扩展了 A 类。A 类是超类,B 类是子类。
多重继承:
多重继承是 Java 类型中的一种继承,其中一个类扩展多个类。 Java 不支持多重继承。
<中心>
<图>
如上图所示,C 类扩展了 A 类和 B 类。
多级继承:
在多级继承中,一个类可以从派生类继承。因此,派生类成为新类的基类。
<中心>
<图>
如图所示,C类是B的子类,B是A类的子类。
层次继承:
在层次继承中,一个类被多个子类继承。
<中心>
<图>
如上例,B、C、D类继承同一个A类。
混合继承:
混合继承是Java中的一种继承类型,是单继承和多继承的结合。
<中心>
<图>
按照上面的例子,A 类的所有公共和受保护成员都继承到 D 类中,首先通过 B 类,然后通过 C 类。
注意: Java 不支持混合/多重继承
Java 中的继承
Java 继承 是一种机制,其中一个类获得另一个类的属性。在 Java 中,当两个类之间存在“Is-A”关系时,我们使用继承。父类称为超类,继承的类称为子类。关键字 extends
被子类用来继承超类的特性。
继承很重要,因为它导致代码的可重用性。
Java 继承语法:
class subClass extends superClass { //methods and fields }
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>();
通过示例学习 OOP 中的继承
考虑与上一个示例相同的银行应用程序。
我们应该开两种不同的账户类型,一种用于储蓄,另一种用于检查(也称为活期)。
让我们比较和研究如何从结构化和面向对象的编程角度进行编码。
结构方法 :在结构化编程中,我们会创建两个函数——
- 一个退场
- 另一个用于存款操作。
由于这些功能的工作方式在各个帐户中保持不变。
OOP 的方法 :同时使用 OOPs 编程方法。我们将创建两个类。
- 每个都有存款和取款功能的实现。
- 这将是多余的额外工作。
软件变更请求
现在,软件行业中很常见的东西的需求规范发生了变化。您应该使用透支功能添加功能特权银行帐户。就背景而言,透支是一种工具,您可以在其中提取超过您帐户中可用余额的金额。
结构方法: 使用函数式方法,我必须修改我的撤销函数,该函数已经过测试和基线化。并添加一个像下面这样的方法来处理新的需求。
OOP 的方法: 使用 OOP 的方法,您只需要编写一个新的类,该类具有独特的撤销功能实现。我们从未接触过测试过的代码。
另一个变更请求
如果需求进一步变化怎么办?喜欢添加具有自己独特存款要求的信用卡账户。
结构方法: 使用结构化方法,您必须再次更改已测试的存款代码。
OOP 的方法 :但是使用面向对象的方法,你只会创建一个新的类,它具有独特的存款方法实现(下图中红色突出显示)。
因此,尽管结构化编程最初似乎是一种简单的方法,但从长远来看,OOP 会获胜。
OOP 中继承的优势
但有人可能会争辩说,在所有类中,您都有一段重复的代码。
为了克服这个问题,你创建了一个父类,比如“account”并实现相同的存款和取款功能。并使子类继承“帐户”类。这样他们就可以访问帐户类中的提款和存款功能。
这些功能不需要单独实现。这是java中的继承。 .
java