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
Lepaskan: 2024-10-31 09:13:30
asal
891 orang telah melayarinya

 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan