Membezakan Polimorfisme Dinamik dan Statik dalam Java
Memahami perbezaan antara polimorfisme dinamik dan statik adalah penting dalam pengaturcaraan berorientasikan objek dengan Java. Artikel ini akan memberikan penjelasan dan contoh yang ringkas untuk menjelaskan konsep ini.
Polymorphism Dinamik lwn. Statik
Polymorphism membenarkan satu nama kaedah mempunyai berbilang pelaksanaan bergantung pada jenis objek memanggilnya. Terdapat dua jenis polimorfisme utama:
Kaedah Lebih Muatan
Kaedah lebihan beban ialah satu bentuk polimorfisme statik di mana berbilang kaedah dengan nama yang sama wujud dalam kelas yang sama tetapi berbeza dalam parameternya. Apabila memanggil kaedah terlebih beban, Java menentukan kaedah yang sesuai untuk digunakan berdasarkan bilangan dan jenis argumen yang dihantar masuk.
Contoh Kod (Pemuatan Terlebih Kaedah):
<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, 10); // Output: 30 obj.sum(20, 20); // Output: 40 } }</code>
Timpa Kaedah
Timpa kaedah ialah satu bentuk polimorfisme dinamik di mana kaedah dengan nama dan tandatangan yang sama diisytiharkan dalam kelas yang berbeza tetapi berkongsi kelas induk yang sama. Apabila memanggil kaedah yang diganti, Java menentukan kaedah untuk memanggil berdasarkan kelas sebenar objek pada masa jalan.
Contoh Kod (Penggantian Kaedah):
<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 Bagaimanakah Kaedah Overriding dan Kaedah Overloading Berbeza dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!