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!