Polymorphism in Java: A Comprehensive Guide
Dalam pengaturcaraan berorientasikan objek, polimorfisme membenarkan objek daripada kelas yang berbeza untuk dianggap sebagai objek sesuatu superclass biasa. Java menyokong polimorfisme melalui dua mekanisme utama: polimorfisme statik dan polimorfisme dinamik.
Polymorfisme Statik
Polymorfisme statik, juga dikenali sebagai beban berlebihan kaedah, berlaku apabila dua atau lebih kaedah dalam kelas yang sama mempunyai nama yang sama tetapi senarai parameter yang berbeza. Semasa penyusunan, pengkompil menentukan kaedah yang hendak digunakan berdasarkan bilangan dan jenis hujah yang diluluskan.
Contoh:
<code class="java">class Calculation { void sum(int a, int b) {} void sum(int a, int b, int c) {} } // Main method Calculation obj = new Calculation(); obj.sum(10, 10, 10); // 30 obj.sum(20, 20); // 40</code>
Dalam contoh ini, kaedah jumlah berlebihan dengan dua senarai parameter yang berbeza. Apabila kaedah dipanggil dengan tiga argumen, pengkompil memilih kaedah jumlah dengan tiga parameter. Sebaliknya, apabila kaedah dipanggil dengan dua argumen, pengkompil memilih kaedah jumlah dengan dua parameter.
Polymorphism Dinamik
Polymorphism dinamik, juga dikenali sebagai kaedah overriding, berlaku apabila dua atau lebih kaedah dalam kelas yang berbeza mempunyai nama dan tandatangan yang sama. Semasa masa jalan, mesin maya menentukan kaedah yang hendak digunakan berdasarkan jenis masa jalan objek.
Contoh:
<code class="java">class Animal { public void move() {} } class Dog extends Animal { public void move() {} } // Main method Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // "Animals can move" b.move(); // "Dogs can walk and run"</code>
Dalam contoh ini, kaedah bergerak ditindih dalam kelas Anjing. Apabila kaedah pergerakan dipanggil pada rujukan Haiwan a, pelaksanaan pergerakan Haiwan akan digunakan. Walau bagaimanapun, apabila kaedah perpindahan dipanggil pada rujukan Anjing b, perlaksanaan langkah Anjing digunakan, menunjukkan polimorfisme dinamik.
Atas ialah kandungan terperinci Bagaimanakah Java Mencapai Polimorfisme dengan Kedua-dua Mekanisme Statik dan Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!