A. Pengertian Polimorfisme
Polimorfisme (Polymorphism) berasal dari bahasa Yunani:
- Poly = banyak
- Morph = bentuk
Dalam PBO, polimorfisme adalah kemampuan objek untuk memiliki banyak bentuk atau kemampuan method untuk berperilaku berbeda meskipun memiliki nama yang sama.
Polimorfisme = method yang sama, perilaku berbeda.
B. Analogi Polimorfisme dalam Kehidupan Nyata
1. Tombol "Power"
- Di HP → menyalakan layar
- Di TV → menyalakan TV
- Di laptop → menyalakan sistem
Nama tombol sama, tetapi fungsinya berbeda tergantung perangkat.
→ Ini sama seperti overriding.
2. Perintah “Cetak” (Print)
- Print dokumen → kertas A4
- Print foto → kertas glossy
- Print label → kertas sticker
Nama perintah "print" sama, namun hasilnya beda.
→ Mirip overloading berdasarkan parameter.
C. Tujuan Polimorfisme
- Membuat kode lebih fleksibel dan mudah dikembangkan.
- Mengurangi duplikasi kode (code duplication).
- Memudahkan penggunaan objek yang berasal dari superclass dan subclass.
- Mendukung konsep "program to interface, not implementation".
D. Jenis-Jenis Polimorfisme dalam PBO
- Compile-Time Polymorphism (Method Overloading)
- Runtime Polymorphism (Method Overriding)
E. Method Overloading (Polimorfisme Waktu Kompilasi)
Metode dengan nama yang sama, tetapi:
- jumlah parameter berbeda
- atau tipe parameter berbeda
- atau urutan parameter berbeda
Java menentukan method yang dipanggil pada saat compile.
Contoh Overloading
public class Matematika {public int tambah(int a, int b) {return a + b;}public double tambah(double a, double b) {return a + b;}public int tambah(int a, int b, int c) {return a + b + c;}}
Pembahasan
tambah(int, int)→ untuk bilangan bulattambah(double, double)→ untuk desimaltambah(int, int, int)→ untuk 3 angka
Nama method sama, tetapi parameter berbeda → ini polimorfisme compile-time.
F. Method Overriding (Polimorfisme Waktu Runtime)
Subclass mengubah perilaku method milik superclass.
Terjadi saat runtime (program berjalan).
Syarat Overriding:
- Nama method sama
- Parameter sama
- Dalam subclass
- Harus ada hubungan inheritance (
extends)
Contoh Overriding
Superclass
public class Hewan {public void suara() {System.out.println("Hewan mengeluarkan suara...");}}
Subclass
public class Kucing extends Hewan {@Overridepublic void suara() {System.out.println("Kucing: Meong!");}}public class Anjing extends Hewan {@Overridepublic void suara() {System.out.println("Anjing: Guk!");}}
Class Main
public class Main {public static void main(String[] args) {Hewan h1 = new Kucing();Hewan h2 = new Anjing();h1.suara();h2.suara();}}
Output
Kucing: Meong!Anjing: Guk!
G. Pembahasan Polimorfisme Runtime
Variabel Hewan h1 bertipe superclass, tetapi objeknya Kucing.
→ Ketika dipanggil h1.suara(), yang jalan adalah method Kucing.suara().
Inilah polimorfisme: objek berbeda merespons panggilan method yang sama dengan cara yang berbeda.
H. Studi Kasus Sederhana PPLG
Sistem Pembayaran dengan Polimorfisme
Superclass
public class Pembayaran {public void bayar() {System.out.println("Melakukan pembayaran...");}}Subclasspublic class PembayaranCash extends Pembayaran {@Overridepublic void bayar() {System.out.println("Pembayaran dilakukan dengan tunai.");}}public class PembayaranQRIS extends Pembayaran {@Overridepublic void bayar() {System.out.println("Pembayaran menggunakan QRIS.");}}public class PembayaranTransfer extends Pembayaran {@Overridepublic void bayar() {System.out.println("Pembayaran melalui transfer bank.");}}
public class Main {public static void main(String[] args) {Pembayaran p;p = new PembayaranCash();p.bayar();p = new PembayaranQRIS();p.bayar();p = new PembayaranTransfer();p.bayar();}}
I. Kesimpulan Materi
Overloading (compile time)3. Polimorfisme membuat program lebih fleksibel, mudah dikembangkan, dan terstruktur
Overriding (runtime)
- Sistem pembayaran- Sistem hewan- Sistem kendaraan- Desain antarmuka- Inheritance & interface