- Komapen.com -
If you want something said, ask a man; if you want something done, ask a woman
-Margaret Thatcher
INHERITANCE / PEWARISAN
Inheritance adalah teknik menghubungkan class secara hierarki antara child class denngan parent class, dimana child class akan mewarisi dari class parentnya. Analaoginya kita sebagai anak dari kedua orang tua di anggap sebagai child, kita mewarisi sifat dan karakter orang tua kita. Dan yang dapat di lakukan oleh kita yaitu mengembangkannya.
Dengan menggunakan konsep pewarisan di PHP dapat mendapatkan data antar class, baik di property maupun data yang ada di dalam method yang visible.
Cara Menuliskan Inheritance
Sebelum membuat class turunannya harus mempunya class utama / parent, kemudian class turunannya / child menggunakan keyword “extends” untuk mewarisi dari class utamanya / parent.
class A {
}
class B extends A{
}
contoh program penggunaan inheritance PHP:
<?php
// buat class induk: komputer
class komputer {
public $merk;
public $processor;
public $memory;
public function beli_komputer() {
return "Beli komputer baru";
}
}
// turunkan class komputer ke laptop
class laptop extends komputer {
public function lihat_spec() {
return "merk: $this->merk, processor: $this->processor, memory: $this->memory";
}
}
// buat objek dari class laptop (instansiasi)
$laptop_baru = new laptop();
// isi property objek
$laptop_baru->merk = "acer";
$laptop_baru->processor ="intel core i5";
$laptop_baru->memory = "2 GB";
//panggil method objek
echo $laptop_baru->beli_komputer();
echo "<br />";
echo $laptop_baru->lihat_spec();
?>
Dalam contoh kode ini terdapat class komputer dengan beberapa property dan sebuah method. Semua property milik class komputer masih belum berisi nilai apa-apa.
Di bawah class komputer, saya membuat class laptop extends class komputer. Disini terjadi penurunan class komputer kepada class laptop. Hasilnya, di dalam class laptop kita bisa mengakses seluruh property dan method apapun milik class komputer selama memiliki hak akses public atau protected.
Untuk membuktikan hal tersebut, saya membuat objek $laptop_baru dari class laptop. Perhatikan bahwa kita bisa mengakses property $merk, $processor, dan$memory yang semuanya adalah milik class komputer, bukan class laptop.
Method beli_komputer() juga sukses diakses dari objek $laptop baru. Inilah yang dimaksud dengan inheritance/penurunan class dalam OOP.
PHP tidak membatasi berapa banyak penurunan objek yang bisa dilakukan. Dalam contoh berikut saya membuat 3 buah class yang saling diturunkan:
<?php
// buat class komputer
class komputer {
protected function beli_komputer() {
return "Beli komputer baru";
}
}
// turunkan class komputer ke laptop
class laptop extends komputer {
protected function beli_laptop() {
return "Beli laptop baru";
}
}
// turunkan class laptop ke chromebook
class chromebook extends laptop {
protected function beli_chromebook() {
return "Beli chromebook baru";
}
public function beli_semua(){
$a = $this->beli_komputer();
$b = $this->beli_laptop();
$c = $this->beli_chromebook();
return "$a <br /> $b <br /> $c";
}
}
// buat objek dari class laptop (instansiasi)
$gadget_baru = new chromebook();
//panggil method objek
echo $gadget_baru->beli_semua();
// $gadget_baru->beli_komputer();
// Fatal error: Call to protected method komputer::beli_komputer() ?>
Di awal kode program kita membuat class komputer yang diturunkan kepada class laptop. Class laptop ini kemudian diturunkan lagi kepada class chromebook. Dari dalam class chromebook ini di panggil method-model milik class diatasnya.
Jika anda perhatikan, setiap method selain method beli_semua(), juga menggunakan hak akses protected. Hak akses protected ini menghalangi kode program lain untuk mengaksesnya, selain class turunan.
Selesai✨