首頁 > Java > java教程 > 動態與靜態綁定:Java 如何在執行時間解析方法呼叫?

動態與靜態綁定:Java 如何在執行時間解析方法呼叫?

Mary-Kate Olsen
發布: 2024-10-31 09:13:30
原創
971 人瀏覽過

 Dynamic vs. Static Binding: How Does Java Resolve Method Calls at Runtime?

理解多態性:區分Java 中的動態綁定與靜態綁定

在Java 中,多態性是指變數引用不同物件的能力類別有兩種形式:動態和靜態。

靜態綁定(編譯時綁定)

在靜態綁定中,方法呼叫綁定到特定物件編譯時間。當在同一個類別中定義具有不同簽章的方法時,就會發生這種情況,稱為方法重載。例如:

1

2

3

4

5

6

7

8

9

10

<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); // 20

        obj.sum(10, 10, 10); // 30

    }

}</code>

登入後複製

動態綁定(運行時綁定)

在動態綁定中,方法呼叫在運行時綁定到特定物件。當子類別重寫其超類別中定義的方法時,就會發生這種情況。例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板