Pada sesi belajar PHP dasar bagian 12, kita telah membahas sedikit tentang pewarisan sifat (inheritance), terutama terkait dengan enkapsulasi protected, yang memungkinkan akses oleh kelas utama dan turunannya. Dalam sesi belajar PHP dasar bagian 13 ini kita akan melanjutkannya dengan membahas tentang konsep inheritance dalam OOP PHP.
Apa itu inheritance (pewarisan sifat)?
Inheritance atau pewarisan sifat, adalah sebuah konsep dalam pemrograman berorientasi object (OOP), termasuk dapat diterapkan pada PHP. Inheritance memungkinkan sebuah kelas (yang disebut kelas anak atau subclass/inherit) untuk mewarisi properties dan methods dari kelas lain (yang disebut kelas induk atau superclass).
Melalui Inheritance, kita dapat membuat sebuah class yang mengambil sebuah sifat dari class lain, yang berfungsi untuk untuk mempermudah penyusunan kode dan menghindari duplikasi.
Implementasi Inheritance
Pada dasarnya, semua class yang dideklarasikan bisa dijadikan kelas induk/superclass. Dan class anak yang diwarisi atau subclass/inherit dideklarasikan dengan menambahkan “extends nama_class” setelah melakukan deklarasi class.
Contoh:
<?php
class mobil{
function dataMobil(){
echo "ini adalah mobil BMW<br>";
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function warnanya(){
$this->dataMobil(); //mewarisi dari sifat class utama mobil
echo "Warna Mobil adalah Hitam";
}
}
$warna = new warnaMobil();
echo $warna->warnanya();
?>
Dengan begitu function / method di dalam class utama/class induk dapat dipanggil dari class yang mewarisi sifat dari induknya tersebut, yaitu class warnaMobil, dan dengan memanggil funcsion di dalam class warnaMobil, yang mana function tersebut telah memanggil function induknya, maka function induk juga akan ikut terpanggil.
Hasil:
Override property atau method dari class induk/pewaris
Karena method dari induk/pewaris dapat dipanggil langsung di class turunan/yang diwarisi, jika memerlukan function yang sama tetapi ada sedikit perubahan data maka dapat dideklarasi ulang dan menambahkan perubahan sesuai kebutuhan yang diperlukan.
Contoh :
<?php
class mobil{
function dataMobil(){
echo "ini adalah mobil BMW<br>";
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function dataMobil(){ //method yang di override
echo "ini adalah mobil BMW, bukan Audi<br>";
}
function warnanya(){
$this->dataMobil(); //mewarisi dari sifat class utama mobil
echo "Warna Mobil adalah Hitam";
}
}
$warna = new warnaMobil();
echo $warna->warnanya();
?>
Hasil :
Cosntructor dalam inheritance
Class anak yang diwarisi (subclass) juga mewarisi konstruktor (__construct) dari pewarisnya, namu jika kelas anak ingin memiliki konstruktor sendiri, php tidak menjalankan konstruktor kelas induk/pewaris.
Contoh :
<?php
class mobil{
public function __construct() {
echo "Mobil dibuat<br>";
}
function dataMobil(){
echo "ini adalah mobil BMW<br>";
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function dataMobil(){
echo "ini adalah mobil BMW, bukan Audi<br>";
}
function warnanya(){
$this->dataMobil(); //mewarisi dari sifat class utama mobil
echo "Warna Mobil adalah Hitam";
}
}
$warna = new warnaMobil();
echo $warna->warnanya();
?>
Hasil :
Dari hasil tersebut diketahui, __construct dari class induknya akan terpanggil, karena class anak dipanggil dan mewarisi class induk.
Jika class anak mendeklarasikan __construct maka konstruktor dari class anak yang terpanggil, Contoh :
<?php
class mobil{
public function __construct() {
echo "Mobil dibuat<br>";
}
function dataMobil(){
echo "ini adalah mobil BMW<br>";
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function dataMobil(){
echo "ini adalah mobil BMW, bukan Audi<br>";
}
function warnanya(){
$this->dataMobil(); //mewarisi dari sifat class utama mobil
echo "Warna Mobil adalah Hitam";
}
public function __construct() {
echo "Mobil dibuat dari dulu<br>";
}
}
$warna = new warnaMobil();
echo $warna->warnanya();
?>
Hasil :
Jika konstruktor dari class induk ingin terpanggil juga, maka perlu menambahkan kode parent::__construct(); dari konstruktor class anak yang diwarisi, contoh :
<?php
class mobil{
public function __construct() {
echo "Mobil dibuat<br>";
}
function dataMobil(){
echo "ini adalah mobil BMW<br>";
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function dataMobil(){
echo "ini adalah mobil BMW, bukan Audi<br>";
}
function warnanya(){
$this->dataMobil(); //mewarisi dari sifat class utama mobil
echo "Warna Mobil adalah Hitam";
}
public function __construct() {
parent::__construct();
echo "Mobil dibuat dari dulu<br>";
}
}
$warna = new warnaMobil();
echo $warna->warnanya();
?>
Hasil :
Kesimpulan
Inheritance memungkinkan perubahan atau bahkan menimpa data dari kelas utama. Dengan inheritance, setiap halaman memiliki kebutuhan yang berbeda tetapi masih menggunakan kelas utama, kita dapat membuat kelas turunan untuk masing-masing halaman dan hanya memanggil kelas turunannya. Hal ini membantu menghindari duplikasi kode serta membuatnya lebih terstruktur dan mudah dikelola.
Demikian series belajar php dasar untuk pemula bagian 13 mengenai Inheritance dalam OOP PHP. Nantikan seri belajar php dasar selanjutnya dari Rumahweb Indonesia. Semoga bermanfaat.