首頁  >  文章  >  Java  >  Java 中方法重寫和方法重載有何不同?

Java 中方法重寫和方法重載有何不同?

Linda Hamilton
Linda Hamilton原創
2024-10-27 20:08:30341瀏覽

How do Method Overriding and Method Overloading Differ in Java?

區分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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn