Java OOP 中的继承
继承是一种类获取另一个类的属性的机制。例如,一个孩子继承了他/她父母的特征。通过继承,我们可以重用现有类的字段和方法。因此,继承有助于可重用性,并且是面向对象编程的重要概念。
在本教程中,你将学习 -
- 继承类型
- Java 中的继承
- Java 继承示例
- 超级关键字
- 通过示例了解 OOP 中的继承
继承类型
Java 中有各种类型的继承:
- **单一继承:**在单继承中,一个类扩展另一个类(仅一个类)。
- **多重继承:**在多重继承中,一个类扩展了多个类。Java 不支持多重继承。
- **多级继承:**在多级继承中,一个类可以从派生类继承。因此,派生类成为新类的基类。
- **分层继承:**在分层继承中,一个类由许多子类继承。
- **混合继承:**混合继承是单继承和多继承的组合。
Java 中的继承
- 在 Java 中,当两个类之间存在
Is-A
关系时,我们使用继承 - 父类称为超类,继承类是子类
- 子类使用关键字
extend
来继承超类的特性 - 继承很重要,因为它导致代码的可重用性
Java 继承语法:
class subClass extends superClass
{
//methods and fields
}
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
关键字
super
关键字类似于 this
关键字,关键字 super
可用于访问父类的任何数据成员或方法。
超级关键字可用于变量、方法和构造函数级别。
语法:
super.<method-name>();
通过示例学习 OOP 中的继承
我们还是参考前一个示例中的相同银行应用程序。
我们应该打开两种不同的帐户类型,一种用于保存,另一种用于检查。
让我们比较和研究下如何从结构化和面向对象的编程角度来处理编码。
结构化方法:在结构化编程中,我们将创建两个函数 -
- 一个是取款行为
- 另一个是存款行为
由于这些功能的行为在各个帐户中都保持相同。
OOP 的方法:使用 OOP 编程方法时。我们将创建两个类。
- 每个都有实施存取款功能。
- 这将是多余的额外工作。
在软件中更改请求
现在,软件需求发生了变化,这在软件行业中是非常常见的。你需要添加具有透支功能的特权银行账户。
**结构方法:**使用功能方法,我们必须修改账户的取款功能,该功能已经过测试和基线测试。并添加如下方法将照顾新的要求。
public withdraw(int Account Type) {
if Account Type = Privileged
// code to withdraw
}
**OOP 的方法:**使用 OOP 的方法,你只需要编写一个具有单独的取款函数的新类。我们从未碰触到已经经过测试的代码。
另一个变更请求
如果有进一步的变更请求怎么办?比如添加有自己唯一存款要求的信用卡账户**。**
**结构方法:**使用结构方法,你必须再次更改已经测试过的存款代码。
OOP 方法:但是使用面向对象编程的方法,你将只使用其存款方法的独特实现创建一个新类。
因此,即使结构编程最初看起来是一个简单的方法,但 OOP 最终会长期获胜。
OOP 中的继承优势
但是有人可能会反驳说,在所有的类中,你都会有重复的代码片段。
要解决这个问题,你需要创建一个父类,比如 Account
并实现相同的存取功能。并使子类继承 Account
类。这样他们就可以访问帐户类中的提款和存款功能。
这些功能不需要单独实现。这就是 Java 中的继承。