本文解釋了Java的繼承如何在超類別和子類別之間建立「is-a」關係,允許子類別繼承和自訂超類別功能。透過使用多態性,子類別可以定義獨特的行為,從而允許程式碼重複使用和物件導向程式設計的靈活性。
在Java中,繼承中超類別(父類別)和子類別(子類別或衍生類別)之間的關係是一種is-a關係,這表示子類別是繼承功能的超類別的特殊版本(限制可以被應用)的衍生類別(CSU Global,n.d)。換句話說,如果類別B繼承自類別A,那麼類別B「是類別A的一個」類型。這種關係允許類別B使用類A提供的所有功能(可以應用限制),同時還添加自己的功能特定功能或/和透過覆蓋類別 A 的部分或全部功能。子類別覆蓋功能的能力是多態性的一種形式。
「多態性的字典定義是指生物學中的一種原理,其中一個有機體或物種可以有許多不同的形式或階段。這個原則也適用於物件導向的程式設計和Java 語言等語言。類別的子類別可以定義自己獨特的行為,但又共享父類別的一些相同功能」(The Java™ Tutorials,n.d.)這在處理來自共享公共超類別類型的不同子類別的多個物件時特別有用。
例如:狗、貓、貓頭鷹都是動物:
超級類別
public class Animal { public void makeSound() { System.out.println("Makes a Sound"); } }
動物子類
public class Domesticated extends Animal { public void friendly() { System.out.println("This animal is friendly."); } }
馴化子類
public class Undomesticated extends Animal { public void notFriendly() { System.out.println("This animal is not friendly."); } }
馴化子類
public class Cat extends Domesticated { @Override public void makeSound() { System.out.println("Meow"); } }
未馴化的子類
public class Owl extends Undomesticated { @Override public void makeSound() { System.out.println("Hoots"); } }
輸出結果的主類別
public class inheritanceExample { public static void main(String[] args) { Dog myDog = new Dog(); Cat myCat = new Cat(); Owl redOwl = new Owl(); System.out.println("MY Dog:"); myDog.makeSound(); // Outputs: Bark myDog.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("My Cat:"); myCat.makeSound(); // Outputs: Meow myCat.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("Red Owl:"); redOwl.makeSound(); // Outputs: Hoot redOwl.notFriendly(); // Outputs: This animal is not friendly. } }
注意:Dog 和 Cat 類別中的 makeSound() 方法會覆寫 Animal 類別中的 makeSound() 方法。
此外,Dog 類是 Domesticated 類的子類,Domesticated 類是 Animal 類的子類。
「→」的孩子
在 Java 中,一個子類別只能有一個超類,例如 Dog 類別不能有超類 Domesticated 和超類 Animal,以下情況是不允許的。
換句話說,一個子類別只能有一個超類,…而且它們不允許有多個父母、祖父母或曾祖父母。
總而言之,Java的繼承允許子類別利用和擴展超類別的功能,體現「is-a」關係並促進多態性。透過在子類別中啟用特定行為,同時在公共超類別中保持共享特徵,可以增強程式碼的可重複使用性、靈活性和一致性。
參考資料:
CUS Global(日期不詳)。模組 1:使用繼承 [互動講座]。科羅拉多州立大學全球分校,CSC372:程式設計 II,電腦科學系。帆布。 2024 年 6 月 8 日取自 https://csuglobal.instruct.com/courses/94948/pages/module-1-overview?module_item_id=4868813
Java™ 教學(日期不詳)。學習 Java 語言:介面和繼承。甲骨文。 2024 年 6 月 8 日取自 https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
原發表於 Alex.omegapy on Medium,由 Level UP Coding 於 2024 年 11 月 1 日發布。
以上是Java 中的繼承和多態性:使用超類別和子類的詳細內容。更多資訊請關注PHP中文網其他相關文章!