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 luarprotected: bisa diakses child class, tapi tidak dari luar. Jalan tengah antarapublicdanprivate.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
extendssatu 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.