PHP OOP inheritance atau pewarisan

Ketika kita ingin mewarisi metode atau variable dari kelas lain. Kelas anak akan mewarisi semua properti dan metode dari kelas induk. Selain itu, ia dapat memiliki properti dan metode sendiri.

Kelas yang diwarisi ditentukan dengan menggunakan kata kunci extends. contohnya class mobil extends Kendaraan karena mobil adalah Kendaraan jadi mewarisi sifat Kendaraan.

Contohnya kita akan memubuat kelas kendaraan yang mempunyai properti warna dan nama mobil:

<?php

class Kendaraan {
  public $nama;
  public $warna;
  public function __construct($nama, $warna) {
    $this->nama = $nama;
    $this->warna = $warna;
  }
  public function show() {
    echo "Mobil {$this->nama} dan warnanya adalah {$this->warna}.";
  }
}

// Mobil mewarisi class Kendaraan
class Mobil extends Kendaraan {
  public function message() {
    echo "Motor atau mobil? ";
  }
}

$mobil = new Mobil("ferrari", "merah");
$mobil->message();
$mobil->show();

?>

Kelas mobil mewarisi kelas kendaraan ini berarti kelas mobil mempunyai properti yang sama pada kelas kendaraan dan juga kelas mobil dapat mempunyai method sendiri yaitu method contohnya method show().

PHP pewarisan dan pembatasan hak akses.

dalam artikel sebelumnya kita telah mempelajari hak akses seperti public, private dan protected. kita akan mencoba untuk membuat method show() protected. contohnya:

<?php

class Kendaraan {
  public $nama;
  public $warna;
  public function __construct($nama, $warna) {
    $this->nama = $nama;
    $this->warna = $warna;
  }
  protected function show() {
    echo "Mobil {$this->nama} dan warnanya adalah {$this->warna}.";
  }
}

// Mobil mewarisi class Kendaraan
class Mobil extends Kendaraan {
  public function message() {
    echo "Motor atau mobil? ";
  }
}

$mobil = new Mobil("ferrari", "merah"); // tidak error karena __construct public
$mobil->message(); // tidak error karena message public
$mobil->show(); // akan error karena show() protected dan dikases diluar kelas

?>

Pada contoh di atas kita melihat bahwa jika kita mencoba memanggil metode yang dilindungi atau protected (show()) dari luar kelas, script akan menampilkan kesalahan.

bagaimana caranya agar tidak error? yaitu kita ingat kalau access modifiers protected hanya dapat diakses didalam kelas dan turunannya saja. contohnya seperti berikut ini:

<?php

class Kendaraan {
  public $nama;
  public $warna;
  public function __construct($nama, $warna) {
    $this->nama = $nama;
    $this->warna = $warna;
  }
  protected function show() {
    echo "Mobil {$this->nama} dan warnanya adalah {$this->warna}.";
  }
}

// Mobil mewarisi class Kendaraan
class Mobil extends Kendaraan {
  public function message() {
    echo "Motor atau mobil? ";
    $this->show();
  }
}

$mobil = new Mobil("ferrari", "merah"); // tidak error karena __construct public
$mobil->message();

?>

 

 

Related posts

Leave a Comment