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 中的繼承。