Inheritance (Pewarisan) dalam PHP

pbobg


Inheritance atau Pewarisan dalam PHP

1. Konsep Inheritance dalam PHP

Inheritance (pewarisan) adalah konsep dasar dalam Pemrograman Berorientasi Objek (OOP) di mana sebuah class dapat mewarisi properti dan method dari class lain.
Class yang mewariskan disebut Superclass (Parent Class), sedangkan class yang menerima warisan disebut Subclass (Child Class).

Tujuan utama inheritance:

  • Mengurangi duplikasi kode.
  • Memudahkan pengelolaan dan pengembangan program.
  • Membentuk hierarki class yang logis.

Sintaks Dasar:

class ParentClass {
    // Properti dan method parent
}

class ChildClass extends ParentClass {
    // Properti dan method tambahan untuk child
}

Keyword extends digunakan untuk menyatakan bahwa class tersebut mewarisi class lain.


2. Superclass dan Subclass

  • Superclass (Parent Class) → class utama yang berisi atribut dan method umum.
  • Subclass (Child Class) → class turunan yang mewarisi atribut dan method dari superclass.

Contoh sederhana:

class Hewan {
    public $nama;

    public function makan() {
        echo "{$this->nama} sedang makan.<br>";
    }
}

class Kucing extends Hewan {
    public function suara() {
        echo "{$this->nama} mengeong: Meong!<br>";
    }
}

$kucing = new Kucing();
$kucing->nama = "Kitty";
$kucing->makan(); // mewarisi method dari class Hewan
$kucing->suara(); // method milik class Kucing

Output:

Kitty sedang makan.
Kitty mengeong: Meong!

3. Keyword parent

Kadang, subclass menimpa (override) method dari superclass. Namun, kita masih bisa memanggil method dari superclass menggunakan keyword parent.

Contoh:

class Hewan {
    public function bersuara() {
        echo "Hewan bersuara umum.<br>";
    }
}

class Kucing extends Hewan {
    public function bersuara() {
        // memanggil method dari class parent
        parent::bersuara();
        echo "Kucing mengeong: Meong!<br>";
    }
}

$obj = new Kucing();
$obj->bersuara();

Output:

Hewan bersuara umum.
Kucing mengeong: Meong!

4. Praktik: Class Hewan → Mamalia → Kucing

Berikut contoh multi-level inheritance:

<?php
// Superclass
class Hewan {
    public $nama;

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

    public function bergerak() {
        echo "{$this->nama} sedang bergerak.<br>";
    }
}

// Subclass 1
class Mamalia extends Hewan {
    public function menyusui() {
        echo "{$this->nama} adalah mamalia dan bisa menyusui.<br>";
    }
}

// Subclass 2
class Kucing extends Mamalia {
    public function suara() {
        echo "{$this->nama} mengeong: Meong!<br>";
    }
}

// Membuat objek
$hewan1 = new Kucing("Kitty");
$hewan1->bergerak();  // dari Hewan
$hewan1->menyusui();  // dari Mamalia
$hewan1->suara();     // dari Kucing
?>

Output:

Kitty sedang bergerak.
Kitty adalah mamalia dan bisa menyusui.
Kitty mengeong: Meong!

5. Catatan Penting

KonsepPenjelasan
extendsDigunakan untuk mewarisi class lain
parent::Memanggil method dari class induk
OverridingSubclass menimpa method parent
Multilevel inheritanceClass turunan bisa diwariskan lagi
Tidak ada multiple inheritance di PHPSatu class hanya bisa extends satu parent, tapi bisa menggunakan traits untuk fungsi tambahan

6. Studi Kasus Mini

Kasus: Sistem data hewan di kebun binatang.

class Hewan {
    protected $nama;
    protected $jenis;

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

    public function info() {
        echo "Nama: {$this->nama}, Jenis: {$this->jenis}<br>";
    }
}

class Mamalia extends Hewan {
    public function kategori() {
        echo "{$this->nama} adalah hewan mamalia.<br>";
    }
}

class Kucing extends Mamalia {
    public function suara() {
        echo "{$this->nama} mengeong.<br>";
    }
}

$hewan = new Kucing("Kitty", "Karnivora");
$hewan->info();
$hewan->kategori();
$hewan->suara();

Output:

Nama: Kitty, Jenis: Karnivora
Kitty adalah hewan mamalia.
Kitty mengeong.

7. Kesimpulan

  • Inheritance memungkinkan pewarisan properti dan method antar class.
  • Gunakan extends untuk membuat hubungan pewarisan.
  • Gunakan parent:: untuk mengakses method class induk.
  • PHP mendukung single inheritance, tapi bisa diperluas dengan traits.
  • Konsep ini sangat membantu dalam reusability dan organisasi kode.