Rumah >Java >javaTutorial >Pengikatan Dinamik lwn Statik: Bagaimana Java Menyelesaikan Panggilan Kaedah pada Masa Jalan?

Pengikatan Dinamik lwn Statik: Bagaimana Java Menyelesaikan Panggilan Kaedah pada Masa Jalan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 09:13:30863semak imbas

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

Memahami Polimorfisme: Membezakan Dinamik daripada Ikatan Statik dalam Java

Di Jawa, polimorfisme, keupayaan pembolehubah untuk merujuk kepada objek yang berbeza kelas, terdapat dalam dua bentuk: dinamik dan statik.

Pengikatan Statik (Pengikatan Masa Kompilasi)

Dalam pengikatan statik, panggilan kaedah diikat pada objek tertentu di masa menyusun. Ini berlaku apabila kaedah dengan tandatangan berbeza ditakrifkan dalam kelas yang sama, yang dikenali sebagai kaedah lebihan beban. Contohnya:

<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>

Pengikatan Dinamik (Pengikatan Masa Jalanan)

Dalam pengikatan dinamik, panggilan kaedah diikat pada objek tertentu pada masa jalankan. Ini berlaku apabila subkelas mengatasi kaedah yang ditakrifkan dalam superclass mereka. Contohnya:

<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>

Atas ialah kandungan terperinci Pengikatan Dinamik lwn Statik: Bagaimana Java Menyelesaikan Panggilan Kaedah pada Masa Jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn