Bag. 9 : Pengertian Inheritance (Pewarisan)
Pengertian Inheritance (Pewarisan) dalam OOP
Inheritance adalah konsep OOP dimana sebuah class dapat menurunkan
property dan method yang dimilikinya kepada class lain. Konsep inheritance
dipakai untuk memanfaatkan fitur code reuse, yakni menghindari terjadinya
duplikasi kode program.
Dalam bahasa Indonesia, inheritance ini disebut juga sebagai
pewarisan atau penurunan.
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 atau heir class.
Tidak semua property dan method 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 atau penurunan sebuah class kepada class
lain menggunakan keyword 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 ke dalam
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 saya 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.
Pada baris terakhir saya menyisipkan kode program untuk mencoba
mengakses method beli_komputer(). Kode ini sengaja diberi tanda komentar karena
PHP akan mengeluarkan error karena kita tidak bisa mengakses method dengan hak
akses protected:
<?
$gadget_baru->beli_komputer();
//
Fatal error: Call to protected method komputer::beli_komputer()
?>
Inilah salah satu penerapan enkapsulasi dalam OOP PHP. Yakni
membatasi method yang tidak boleh diakses akan membuat kode program menjadi
lebih terstruktur.

Post a Comment