Skip to main content

Polymorphism

📌 Pengertian Polymorphism

Polymorphism adalah konsep dalam OOP yang memungkinkan sebuah method memiliki banyak bentuk (poly = banyak, morph = bentuk).

Artinya, satu nama method bisa memiliki perilaku berbeda tergantung konteks penggunaannya.

🧱 Jenis Polymorphism

🔹 1. Compile-time Polymorphism (Method Overloading)

Terjadi saat method memiliki nama yang sama tetapi parameter berbeda.

class Kalkulator {
int tambah(int a, int b) {
return a + b;
}

int tambah(int a, int b, int c) {
return a + b + c;
}
}

public class Main {
public static void main(String[] args) {
Kalkulator k = new Kalkulator();
System.out.println(k.tambah(2, 3));
System.out.println(k.tambah(2, 3, 4));
}
}

📌 Output:

5
9

🔹 2. Runtime Polymorphism (Method Overriding)

Terjadi saat subclass mengubah method dari superclass.

class Hewan {
void suara() {
System.out.println("Hewan bersuara");
}
}

class Kucing extends Hewan {
@Override
void suara() {
System.out.println("Meong");
}
}

public class Main {
public static void main(String[] args) {
Hewan h = new Kucing();
h.suara();
}
}

📌 Output:

Meong

⚖️ Perbedaan Overloading vs Overriding

OverloadingOverriding
Compile-timeRuntime
Parameter berbedaParameter sama
Satu classAntar class

🔧 Contoh Implementasi

class Hewan {
void suara() {
System.out.println("Hewan bersuara");
}
}

class Anjing extends Hewan {
void suara() {
System.out.println("Guk guk");
}
}

class Kucing extends Hewan {
void suara() {
System.out.println("Meong");
}
}

public class Main {
public static void main(String[] args) {
Hewan h1 = new Anjing();
Hewan h2 = new Kucing();

h1.suara();
h2.suara();
}
}

📌 Output:

Guk guk
Meong

🎯 Penutup

Polymorphism membuat kode lebih fleksibel, reusable, dan mudah dikembangkan dalam Java.