继承 Java (附示例)
什么是继承?
遗产 是一种一个类获得另一个类的属性的机制。例如,孩子继承了父母的特征。通过继承,我们可以重用现有类的字段和方法。因此,继承促进了可重用性,是 OOP 的一个重要概念。
什么是继承 Java?
Java 遗产 是一种让一个类获得另一个类的属性的机制。在 Java,当两个类之间存在“Is-A”关系时,我们使用继承。父类称为超类,继承的类称为子类。关键字 extends
供子类继承超类的特性。继承很重要,因为它可以提高代码的可重用性。
Java 继承语法:
class subClass extends superClass { //methods and fields }
继承类型 Java
以下是不同类型的继承 Java:
- 单继承
- 多重继承
- 多级继承
- 层次继承
- 混合继承
1.单一继承:
在单一继承中,一个类扩展另一个类(仅限一个类)。
在上图中,类 B 仅扩展了类 A。类 A 是超类,类 B 是子类。
2.多重继承:
多重继承是 Java 一个类扩展多个类的类型。 Java 不支持多重继承。
根据上图,类 C 扩展了类 A 和类 B。
3.多级继承:
在多级继承中,一个类可以从派生类继承。因此,派生类将成为新类的基类。
如图所示,C 类是 B 类的子类,而 B 类是 A 类的子类。
4.分层继承:
在层次继承中,一个类被许多子类继承。
如上例所示,类 B、类 C 和类 D 继承了同一个类 A。
5.混合继承:
混合继承是 Java 它是单继承和多继承的组合。
按照上面的例子,A 类的所有公共和受保护成员都被继承到 D 类中,首先通过 B 类,其次通过 C 类。
请注意: 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 的方法:使用 面向对象 编程方法。我们将创建两个类。
- 每个都具有存款和取款功能的实现。
- 这将会造成多余的额外工作。
软件中的变更请求
现在,软件行业中常见的需求规范发生了变化。您应该添加具有透支功能的特权银行帐户功能。背景是,透支是一种您可以提取超过帐户余额的金额的功能。
结构方法: 使用函数式方法,我必须修改我的 withdraw 函数,该函数已经过测试并已建立基准。并添加如下所示的方法以满足新要求。
OOP 的方法: 使用 OOP 方法,你只需要编写一个具有 withdraw 函数独特实现的新类。我们从未触碰过被测试的代码片段。
另一个变更请求
如果要求进一步发生变化怎么办?比如添加信用卡账户,并有自己独特的存款要求.
结构方法: 使用结构化方法,您必须再次更改经过测试的存款代码。
OOP 的方法:但是使用面向对象方法,您只需创建一个具有其独特的存款方法实现的新类(下图中以红色突出显示)。因此,尽管结构化编程最初看起来是一种简单的方法,但从长远来看,OOP 更胜一筹。
OOP 中继承的优点
但有人可能会说,在所有类别中,都有重复的代码片段。
为了解决这个问题,您可以创建一个父类,例如“帐户”,并实现相同的存款和取款功能。并使子类继承“帐户”类。这样它们就可以访问帐户类中的取款和存款功能。这些功能不需要单独实现。这是 Java 中的继承。 .