Pewarisan dan Polimorfisme


Pewarisan (Inheritance)

Pewarisan adalah konsep dalam pemrograman berorientasi objek di mana sebuah kelas baru dapat mewarisi sifat-sifat (properti dan metode) dari kelas yang sudah ada. Dalam PHP, kita dapat menggunakan kata kunci extends untuk mengimplementasikan pewarisan.

class Kendaraan {
    public $jenis;

    public function __construct($jenis) {
        $this->jenis = $jenis;
    }

    public function tampilkanJenis() {
        echo "Ini adalah kendaraan jenis " . $this->jenis;
    }
}

class Mobil extends Kendaraan {
    public function tampilkanMerek($merek) {
        echo "Mobil ini adalah merek $merek";
    }
}

$mobil = new Mobil("Sedan");
$mobil->tampilkanJenis(); // Output: Ini adalah kendaraan jenis Sedan
$mobil->tampilkanMerek("Toyota"); // Output: Mobil ini adalah merek Toyota

Dalam contoh di atas, kelas Mobil mewarisi sifat dari kelas Kendaraan.

Polimorfisme

Polimorfisme adalah konsep di mana objek dari kelas yang berbeda dapat merespons metode dengan nama yang sama sesuai dengan implementasinya sendiri. Ini memungkinkan kita untuk menggunakan metode yang sama dengan cara yang berbeda.

class Hewan {
    public function suara() {
        // Metode suara umum untuk semua hewan
        echo "Suara hewan ini berbeda-beda.";
    }
}

class Kucing extends Hewan {
    public function suara() {
        // Implementasi metode suara khusus untuk kucing
        echo "Meow!";
    }
}

class Anjing extends Hewan {
    public function suara() {
        // Implementasi metode suara khusus untuk anjing
        echo "Woof!";
    }
}

function panggilSuara(Hewan $hewan) {
    $hewan->suara();
}

$kucing = new Kucing();
$anjing = new Anjing();

panggilSuara($kucing); // Output: Meow!
panggilSuara($anjing); // Output: Woof!

Dalam contoh di atas, kita menggunakan polimorfisme untuk memanggil metode suara() yang berbeda tergantung pada jenis objek yang diberikan kepada fungsi panggilSuara().

Sekarang Anda telah memahami dasar-dasar pewarisan dan polimorfisme dalam PHP. Semoga tutorial ini membantu!