Memahami Polimorfisme, Overriding dan Overloading dalam Java
Apabila membincangkan polimorfisme dalam Java, adalah penting untuk membezakan antara beban lampau dan overriding. Lebihan beban melibatkan penentuan berbilang kaedah dengan nama yang sama tetapi parameter yang berbeza, manakala penggantian berlaku apabila subkelas melaksanakan kaedah daripada kelas supernya.
Mengenai persoalan mengklasifikasikan polimorfisme sebagai beban lampau atau mengatasi, kedua-duanya tidak betul sepenuhnya. Polimorfisme menggabungkan kedua-dua konsep.
Kelas Asas Abstrak dan Penggantian
Polymorfisme ditunjukkan dengan terbaik melalui kelas asas abstrak, yang mengisytiharkan kaedah tanpa melaksanakannya. Subkelas kemudian mentakrifkan kaedah ini khusus untuk warisan mereka. Proses ini dianggap mengatasi, kerana subkelas menyediakan pelaksanaannya sendiri untuk kaedah yang diwarisi.
Sebagai contoh, pertimbangkan kelas asas abstrak Manusia dengan kaedah abstrak goPee(), mewakili manusia generik yang pergi ke bilik air. Subkelas Lelaki dan Perempuan mengatasi kaedah ini dengan pelaksanaan khusus:
public abstract class Human { public abstract void goPee(); } public class Male extends Human { @Override public void goPee() { System.out.println("Stand Up"); } } public class Female extends Human { @Override public void goPee() { System.out.println("Sit Down"); } }
Dengan mencipta ArrayList yang mengandungi contoh Manusia, kita boleh gunakan kaedah goPee() secara polimorf, terhasil dalam output yang berbeza berdasarkan subkelas tertentu:
ArrayList<Human> group = new ArrayList<>(); group.add(new Male()); group.add(new Female()); for (Human person : group) person.goPee();
Ini menggambarkan kepelbagaian polimorfisme dalam membolehkan penggunaan kaedah biasa merentas objek yang berbeza, walaupun pelaksanaannya yang khusus.
Atas ialah kandungan terperinci Overloading vs. Overriding: Bagaimanakah Polimorfisme Berkaitan dengan Kedua-duanya di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!