Pengertian
Inheritance (Pewarisan) dalam OOP
Inheritance atau Pewarisan/Penurunan adalah
konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang
dimilikinya kepada class lain. Konsep inheritancedigunakan
untuk memanfaatkan fitur ‘code reuse’ untuk
menghindari duplikasi kode program.
Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program. Class yang
akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atauheir class.
Tidak semua property dan method dari class induk
akan diturunkan. Property dan method dengan
hak akses private, tidak akan diturunkan
kepada class anak. Hanya property dan
method dengan hak akses protected dan public saja yang bisa diakses dari class anak.
Cara
Penggunaan Inheritance dalam PHP
Di dalam PHP, inheritance / penurunan dari sebuah class kepada class lain menggunakan
kata kunci: ‘extends’, dengan penulisan dasar sebagai berikut:
class induk {
//...isi class induk
}
class anak extends induk
{
//... class anak bisa mengakses
//... property dan method class induk
}
Agar lebih mudah dipahami, kita akan langsung masuk kedalam contoh program
penggunaan inheritance/penurunan di dalam
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 diatas, saya membuat class komputer dengan beberapa property dan sebuah method. Property class komputer belum berisi nilai apa-apa.
Dibawah class komputer,
saya membuat class laptop extends class komputer.
Disini saya menurunkan class komputer kedalam class laptop. Di dalam class laptop, kita bisa mengakses seluruh property dan method apapun
dari 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 ‘menurunkan’:
<?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()
?>
Dalam contoh diatas, saya
membuat class komputer yang diturunkan kepada class laptop, dan kemudian diturunkan lagi kepada class chromebook. Dari
dalam class chromebook ini kemudian saya memanggil method dari class diatasnya.
Jika anda perhatikan, setiap method selain method beli_semua(), memiliki hak akses protected. Hak akses protected ini ‘menghalangi’ kode
program lain untuk mengaksesnya, selain classturunan.
Pada baris terakhir, saya
menyisipkan kode program untuk mencoba mengakses method beli_komputer() . Kode ini sengaja saya beri
tanda komentar. Jika anda menghapus tanda komentar, PHP akan mengeluarkan error
yang menyatakan kita tidak bisa mengakses method dengan hak akses protected:
<?
$gadget_baru->beli_komputer();
// Fatal error: Call to protected method
komputer::beli_komputer()
?>
Inilah yang dimaksud dengan enkapsulasi dalam OOP. Membatasi method yang tidak
boleh diakses akan membuat kode program menjadi lebih terstruktur.
No comments:
Post a Comment