首頁 >Java >java教程 >Java中動態多型和靜態多態有什麼不同?

Java中動態多型和靜態多態有什麼不同?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 11:15:20843瀏覽

What is the difference between dynamic and static polymorphism in Java?

了解Java 中的動態和靜態多態性

Java 中的多態性允許不同類別的物件以相似的方式運行,儘管它們之間存在差異。這種靈活性是透過兩種類型的多態性來實現的:動態和靜態。

動態多態性
也稱為運行時多態性,動態多態性在子類別中發生方法重寫時發生。對重寫方法的呼叫在運行時會根據實際物件類型進行解析。

考慮以下範例:

<code class="java">class Animal {
    public void move() {
        System.out.println("Animals can move");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal(); // Animal reference and object
        Animal dog = new Dog(); // Animal reference but Dog object

        animal.move(); // Output: Animals can move
        dog.move(); // Output: Dogs can walk and run
    }
}</code>

在此範例中,move() 方法在狗類。當動物引用呼叫 move() 方法時,物件的實際類型(Animal 或 Dog)決定了運行時的行為。這就是動態多態。

靜態多態(方法重載)
靜態多態性,也稱為編譯時多態性,當存在多個同名但參數列表不同的方法時,就會發生這種情況。同一個班級。對正確方法的呼叫是在編譯時根據傳遞的參數的數量和類型確定的。

考慮以下範例:

<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 calculation = new Calculation();
        calculation.sum(10, 10, 10); // Output: 30
        calculation.sum(20, 20); // Output: 40
    }
}</code>

在此範例中, sum()方法重載了不同的參數清單。對正確 sum() 方法的呼叫是在編譯時根據傳遞的參數數量決定的。這就是靜態多型或方法重載。

以上是Java中動態多型和靜態多態有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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