oopinheritanceextendsMahir3 mnt baca

Inheritance

Mewarisi sifat class lain dengan extends: reuse kode, override method, dan visibility protected.

extends: mewarisi dari parent

php
<?php
class Hewan {
    public string $nama;

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

    public function bersuara(): string {
        return "...";
    }
}

class Kucing extends Hewan {
    public function bersuara(): string {
        return "Meong!";
    }
}

class Anjing extends Hewan {
    public function bersuara(): string {
        return "Guk guk!";
    }
}

$k = new Kucing("Kitty");
echo $k->nama;       // Kitty (warisan dari Hewan)
echo $k->bersuara(); // Meong! (method dioverride)

Child class otomatis punya semua property dan method public/protected milik parent, dan boleh meng-override method dengan versi sendiri.

parent:: dan protected

php
<?php
class Pegawai {
    protected float $gajiPokok = 5000000;

    public function gaji(): float {
        return $this->gajiPokok;
    }
}

class Manager extends Pegawai {
    public function gaji(): float {
        return parent::gaji() + 2000000; // pakai versi parent, lalu tambah
    }
}

$m = new Manager();
echo $m->gaji(); // 7000000
// echo $m->gajiPokok; // ERROR: protected tidak bisa diakses dari luar
  • protected: bisa diakses child class, tapi tidak dari luar. Jalan tengah antara public dan private.
  • parent::gaji(): memanggil method versi parent dari dalam child.
  • final class: class yang tidak boleh diwarisi siapa pun.

Catatan teknis: PHP hanya mendukung single inheritance: satu class hanya boleh extends satu parent. Ini disengaja untuk menghindari kebingungan "diamond problem". Kalau butuh kemampuan dari banyak sumber, gunakan interface (kontrak) atau trait (tempelan kode) yang dibahas di modul berikutnya.