Java 中的多態性:綜合指南
在物件導向程式設計中,多態性允許將不同類別的物件視為同一類別的物件共同的超類別。 Java 透過兩種主要機制來支援多態:靜態多型態和動態多型態。
靜態多態
靜態多態性,也稱為方法重載,當兩個或多個方法在同一類別具有相同的名稱但不同的參數列表。在編譯過程中,編譯器會根據傳遞的參數的數量和類型來決定要呼叫哪個方法。
範例:
<code class="java">class Calculation { void sum(int a, int b) {} void sum(int a, int b, int c) {} } // Main method Calculation obj = new Calculation(); obj.sum(10, 10, 10); // 30 obj.sum(20, 20); // 40</code>
在此範例中,此方法sum 重載了兩個不同的參數清單。當使用三個參數呼叫方法時,編譯器會選擇具有三個參數的 sum 方法。相反,當使用兩個參數呼叫方法時,編譯器會選擇使用兩個參數的 sum 方法。
動態多態
動態多態性,也稱為方法重寫,當不同類別中的兩個或多個方法具有相同的名稱和簽名時,就會發生這種情況。在運行時,虛擬機器根據物件的運行時類型決定呼叫哪個方法。
範例:
<code class="java">class Animal { public void move() {} } class Dog extends Animal { public void move() {} } // Main method Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // "Animals can move" b.move(); // "Dogs can walk and run"</code>
在此範例中,方法 move在 Dog 類別中被重寫。當對 Animal 引用 a 呼叫 move 方法時,將呼叫 move 的 Animal 實作。然而,當在 Dog 引用 b 上呼叫 move 方法時,會呼叫 move 的 Dog 實現,這展示了動態多態性。
以上是Java如何透過靜態和動態機制實現多型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!