區分Java 中的動態多態性與靜態多態性
理解動態多態性與靜態多態性之間的區別對於Java 的物件導向程式設計至關重要。本文將提供一個簡化的解釋和範例來闡明這個概念。
動態多態與靜態多態
多態允許單一方法名稱有多個實現,取決於呼叫它的物件類型。多態性有兩種主要類型:
方法重載
方法重載是靜態多態性的一種形式,其中多個同一類別中存在同名的方法,但參數不同。當呼叫重載方法時,Java 根據傳入參數的數量和類型決定要呼叫的適當方法。
程式碼範例(方法重載):
<code class="java">class Calculation { void sum(int a, int b) { System.out.println(a + b); } void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void main(String[] args) { Calculation obj = new Calculation(); obj.sum(10, 10, 10); // Output: 30 obj.sum(20, 20); // Output: 40 } }</code>
方法重寫
方法重寫是動態多點方法態性的一種形式,其中具有相同名稱和簽名的方法在不同的類別中聲明,但共享一個公共的父類別。當呼叫重寫的方法時,Java 在執行時會根據物件的實際類別決定要呼叫的方法。
程式碼範例(方法重寫):
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { public void move() { System.out.println("Dogs can walk and run"); } } public class TestDog { public static void main(String[] args) { Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // Output: Animals can move b.move(); // Output: Dogs can walk and run } }</code>
以上是Java 中方法重寫和方法重載有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!