1. Pengantar Polymorphism
Dalam Pemrograman Berorientasi Objek (Object Oriented Programming / OOP), Polymorphism adalah salah satu dari empat pilar utama OOP, yaitu:
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
Polymorphism berasal dari bahasa Yunani:
- Poly = banyak
- Morph = bentuk
📌 Artinya: satu nama method yang sama dapat memiliki perilaku (implementasi) yang berbeda, tergantung pada objek yang menggunakannya.
2. Analogi Sederhana Polymorphism
Bayangkan tombol “Cetak”:
- Pada printer → mencetak kertas
- Pada PDF → menyimpan file
- Pada layar → menampilkan preview
👉 Nama tombolnya sama (cetak), tetapi hasilnya berbeda.
Inilah konsep dasar polymorphism.
3. Polymorphism dalam PHP
Dalam PHP, polymorphism biasanya diterapkan menggunakan:
- Inheritance (Pewarisan)
- Method Overriding
- Interface
- Abstract Class
Fokus utama pembelajaran awal adalah method overriding.
4. Contoh Dasar Tanpa Polymorphism
class Kucing {
public function suara() {
return “Meong”;
}
}
class Anjing {
public function suara() {
return “Guk guk”;
}
}
❌ Masalah:
- Tidak ada hubungan antar class
- Sulit dikembangkan jika objek bertambah banyak
5. Polymorphism dengan Inheritance & Method Overriding
5.1 Class Induk (Parent Class)
class Hewan {
public function suara() {
return “Hewan bersuara”;
}
}
5.2 Class Turunan (Child Class)
class Kucing extends Hewan {
public function suara() {
return “Meong”;
}
}
class Anjing extends Hewan {
public function suara() {
return “Guk guk”;
}
}
📌 Method suara() dioverride oleh class turunan.
6. Implementasi Polymorphism
$hewan1 = new Kucing();
$hewan2 = new Anjing();
function cetakSuara(Hewan $hewan) {
echo $hewan->suara();
}
cetakSuara($hewan1); // Meong
cetakSuara($hewan2); // Guk guk
✅ Penjelasan:
- Fungsi menerima parameter bertipe
Hewan - Objek berbeda menghasilkan output berbeda
Inilah inti Polymorphism.
7. Polymorphism Menggunakan Interface
7.1 Membuat Interface
interface Bentuk {
public function hitungLuas();
}
7.2 Implementasi Interface
class Persegi implements Bentuk {
private $sisi;
public function __construct($sisi) {
$this->sisi = $sisi;
}
public function hitungLuas() {
return $this->sisi * $this->sisi;
}
}
class Lingkaran implements Bentuk {
private $jari;
public function __construct($jari) {
$this->jari = $jari;
}
public function hitungLuas() {
return 3.14 * $this->jari * $this->jari;
}
}
8. Implementasi Polymorphism dengan Interface
function cetakLuas(Bentuk $bentuk) {
echo $bentuk->hitungLuas();
}
cetakLuas(new Persegi(5));
cetakLuas(new Lingkaran(7));
📌 Method yang dipanggil sama (hitungLuas()), tetapi hasil berbeda.
9. Polymorphism dengan Abstract Class
abstract class Kendaraan {
abstract public function bergerak();
}
class Mobil extends Kendaraan {
public function bergerak() {
return “Mobil berjalan di jalan”;
}
}
class Kapal extends Kendaraan {
public function bergerak() {
return “Kapal berlayar di laut”;
}
}
10. Manfaat Polymorphism
- Kode lebih fleksibel
- Mudah dikembangkan
- Mengurangi duplikasi kode
- Mendukung prinsip SOLID (Open/Closed)
- Meningkatkan keterbacaan kode
11. Kesalahan Umum Mahasiswa
❌ Tidak memahami hubungan parent–child ❌ Method overriding tidak sesuai signature ❌ Tidak menggunakan type hinting
12. Studi Kasus Sederhana
Kasus: Sistem Pembayaran
interface Pembayaran {
public function proses();
}
class TransferBank implements Pembayaran {
public function proses() {
return “Pembayaran via Transfer Bank”;
}
}
class EWallet implements Pembayaran {
public function proses() {
return “Pembayaran via E-Wallet”;
}
}
function bayar(Pembayaran $pembayaran) {
echo $pembayaran->proses();
}
bayar(new TransferBank());
bayar(new EWallet());
13. Ringkasan Materi
- Polymorphism = satu method, banyak perilaku
- Diterapkan melalui inheritance, interface, abstract class
- Method overriding adalah kunci utama
14. Pertanyaan Diskusi
- Mengapa polymorphism penting dalam OOP?
- Apa perbedaan polymorphism dengan inheritance?
- Kapan sebaiknya menggunakan interface?