logo Sipintek.com
Browse : Home / Pemrograman / PHP / Class Turunan (Inheritance) & Access Modifier OOP di PHP
Gambar Class Turunan (Inheritance) & Access Modifier OOP di PHP

Class Turunan (Inheritance) & Access Modifier OOP di PHP

Published by I Gede Arya Surya Gita - Posted on April 1st, 2020 - No Comments

Hai Sipinter! Sesuai judul sudah pasti kita lagi di sesi “Tutorial Pemrograman PHP” dimana kita membahas semua hal tentang membuat web dengan PHP.

Masih di materi mengenai OOP dimana kali ini kita akan membahas tentang inheritance (Penurunan atau Pewarisan) dan access modifiers dalam OOP di PHP.

Agar tidak kebingungan dalam pembahasan kali ini kita perlu memahami pembahasan sebelumnya mengenai OOP di PHP, yaitu:

  1. Belajar Konsep OOP dalam Pemrograman PHP
  2. Constructor dan Destructor Dalam OOP di PHP

Berikut beberapa hal yang akan kita bahas pada postingan kali ini:

Seperti yang kalian lihat kita akan membahas satu-persatu tentang Inheritance dan hubungannya dengan Access Modifiers.

Apa itu Inheritence?

Inheritence merupakan sebuah konsep penurunan atau pewarisan sifat (Method dan Property) dari sebuah class ke class lain.

Artinya dengan Inheritence sebuah class dapat menggunakan property dan method yang ada pada class yang diturunkan.

Inheritence menimbulkan hearki hubungan sebuah class, dimana class utama yang diturunkan sifatnya disebut sebagai class induk/ parent class/ super class/ base class, lalu class turunan yang menerima sifat dari class utama disebut class anak/ sub class.

Penurunan class akan membuat kita dapat menggunakan kembali kode yang telah kita buat (reuse code), sehingga penulisan program lebih efektif, efisien, terstruktur dan tidak menimbulkan duplikasi kode.

Cara membuat class turunan adalah dengan meng extends nya ke class induk.

Contoh cara membuat class turunan di PHP:

<?php  
	class Buku
	{

		public $buku=['matematika','bahasa','ips'];

		public function tampilkanBuku(){
			echo "<h1>Daftar Buku</h1>";
			foreach ($this->buku as $no => $data) {
				$n=$no+1;
				echo "$n. $data<br/>";
			}
		}

	}

	class PeminjamanBuku extends Buku
	{
		
		public function cariBuku($nama_buku){
			echo "<hr/>";
			//cara memanggul properti dari class induk
			if(in_array($nama_buku, $this->buku)){
				echo "buku $nama_buku ditemukan<br/>";
			}else{
				echo "Buku $nama_buku tidak ditemukan<br/>";
			}
			echo "<hr/>";
		}
	}

	$peminjam=New PeminjamanBuku();

	$peminjam->cariBuku('bahasa');

	//coba memanggil method pada class buku melalui objek yang dibuat dari class turunan
	$peminjam->tampilkanBuku();

?>

Hasilnya seperti gambar di bawah:

Gambar Hasil dari Membuat Class Turunan di PHP

Apa itu Access Modifiers?

Access Modifier atau Visisbility adalah sebuah keyword yang digunakan oleh class, method dan property untuk mengatur dan menentukan hak aksesnya.

Access modifier membuat kita tidak bisa sembarangan menggunakan class, method dan property yang sudah ada sehingga keamanan akan lebih terjaga.

Karena pada umumnya ada beberapa data yang bersifat rahasia dan perintah yang tidak boleh dijalankan sembarangan.

Inilah yang membedakan method dengan fungsi atau variabel dengan property yaitu adanya access modifier pada method dan property.

Jika kalian bilang “tapi kan bisa method dan property enggak ada atau tidak diisi access modifiernya?” jawabanya adalah jika tidak ditentukan access modifiernya maka method dan properti itu otomatis menjadi public.

Jenis-jenis Access Modifiers

berikut merupakan beberapa jenis access modifier yang ada di PHP:

  1. public = Mengatur hak akses method dan properti agar dapat diakses dari manapun bahkan dari luar class (pada saat menjadi objek).
  2. private = Mengatur hak ases method dan property agar hanya dapat diakses dari class tersebut namun tidak dapat diakses dari class turunannya dan dari objeknya.
  3. protected = Mengatur hak akses method dan property agar hanya dapat diakses di class tersebut dan turunannya tapi tidak bisa dari objek.
  4. abstract = Hanya dapat digunakan class dan method untuk membuat class dan method abstrak.
  5. final = Hanya dapat digunakan class dan method ini membuat sebuah class tidak dapat diturunkan dan method tidak dapat di timpa atau dideklarasikan ulang.

Membatasi Property dan Method Yang Diturunkan dengan Access Modifiers

Seperti yang sudah dijelaskan diatas ada tiga access modifier yang dapat digunakan untuk method dan property yaitu public, private dan protected.

Gunakan public jika kita ingin method dan property dapat diakses dari class turunan dan dari objek.

Dunakan private ketika kita hanya ingin sebuah method dan property hanya dapat diakses di class tersebut.

Gunakan protected jika kita ingin method dan property bisa diakses melalui class turunan tapi tidak bisa dari objek.

Berikut adalah contoh cara membatasi method dan property yang dapat digunakan pada class turunan:

<?php
		Class induk
		{
			public $dataPublic="Ini data Public";
			private $dataPrivate="Ini data Private";
			protected $dataProtected="Ini data Protectted";

			public function PublicFunction(){
				echo "Ini Fungsi Public";
			}

			private function PrivateFunction(){
				echo "Ini Fungsi Private";
			}

			protected function ProtectedFunction(){
				echo "Ini Fungsi Protected";
			}

		}
		class anak extends induk
		{

			//property yang dapat diakses dari class turunan
			public function PropertyYgBisa(){
				echo "dataPublic = ".$this->dataPublic."<br/>";
				echo "dataProtected = ".$this->dataProtected."<br/>";

			}

			public function RemakeProtectedFunction(){
				//cara menggunakan method pada class induk
				$this->ProtectedFunction();
			}

		}

		$data=New anak();

		//menampilkan properti yang dapat diakses dari objek class turunan
		echo "<hr/>dataPublic = ".$data->dataPublic." <br><hr/>";
		
		//menampilkan properti yang dapat diakses dari class turunan
		$data->PropertyYgBisa();
		
		echo "<hr>";
		//menggunakan method yang dapat digunakan dari objek class turunan
		$data->PublicFunction();

		echo "<br/>";
		$data->RemakeProtectedFunction();

?>

Hasilnya adalah seperti gambar di bawah:

Gambar hasil membatasi hak akses method dan property dengan access modifier

Cara Menimpa Method Pada Class Turunan

Kita dapat menimpa method yang sudah kita buat di class utama dengan mendeklarasikannya kembali di class turunan.

Karena yang akan dipanggil pertama kali adalah method yang berada di class turunan yang kita buat sebagai object.

berikut merupakan contoh cara menimpa method yang sudah ada di class induk:

<?php

	class Perpustakaan 
	{
		public $databuku=['Matematika','Fisika','Sejarah','Bahasa'];
		
		public function tampilBuku()
		{
			foreach ($this->databuku as $key => $value) {
				echo "$key. buku $value, ";
			}
		}
	}
	class Buku extends Perpustakaan
	{
		Public function tampilBuku()
		{
			echo "<h1>Daftar Buku di Perpustakaan</h1>";
			foreach ($this->databuku as $key => $value) {
				$n=$key+1;
				echo "$n. buku $value <br/>";
			}
		}
	}

	$buku=New Buku();
	$buku->tampilBuku();

?>

Hasilnya bisa dilihat seperti gambar di bawah fungsi tampilBuku yang dijalankan adalah fungsi yang ada di class buku bukan yang berada di class perpustakaan :

Gambar hasil menimpa method pada class induk dari class turuan di PHP

Cara Membuat Class atau Method Tidak Dapat Diturunkan

Untuk mencegah sebuah class tertentu untuk diturunkan maka kita bisa mengunakan access modifier final dan jika ini digunakan pada method akan membuat method ini tidak bisa ditimpa dengan method baru.

berikut merupakan contoh membuat class tidak dapat diturunkan dan membuat method tidak dapat di timpa:

<?php
	final class perpustakaan
	{
		public function tampilPegawai()
		{
			echo "Pegawai berjumlah 5 orang yaitu nana, Leo, Tati, Nay, Tono";
		}
	}
	//penurunanan final class akan menimbulkan error 
	class buku extends perpustakaan
	{
		
		
	}
?>

Hasilnya akan error seperti gambar di bawah:

Gambar hasil error jika menurunkan class dengan access modifier final

Lalu kita akan mencoba membuat method dengan access modifier final agar tidak dapat ditimpa pada class turunan, seperti di bawah:

<?php

	class Perpustakaan 
	{
		public $databuku=['Matematika','Fisika','Sejarah','Bahasa'];
		
		final function tampilBuku()
		{
			foreach ($this->databuku as $key => $value) {
				echo "$key. buku $value, ";
			}
		}
	}
	class Buku extends Perpustakaan
	{
		//akan menimbulkan error karena fungsi bersifat final
		Public function tampilBuku()
		{
			echo "<h1>Daftar Buku di Perpustakaan</h1>";
			foreach ($this->databuku as $key => $value) {
				$n=$key+1;
				echo "$n. buku $value <br/>";
			}
		}
	}

	$buku=New Buku();
	$buku->tampilBuku();

?>

Hasilnya akan error seperti gambar di bawah:

Gambar hasil error jika menimpa method dengan access modifier final di php

Sekian postingan kali ini semoga bermanfaat untuk kita semua, dan nantikan postingan menarik dari kami!

“Nikmati sebuah proses mulai dari belajar, mengembangkan, sampai kita bisa berbagi untuk orang lain.”

Bantu kami dengan share postingan ini dan ikuti social media Sipintek.


Gambar Membuat Database Untuk Web CMS dengan MySQL #1

Membuat Database Untuk Web CMS dengan MySQL #1


Gambar Penjelasan MVC Dalam Pemrograman Web PHP

Penjelasan MVC Dalam Pemrograman Web PHP


Gambar Belajar Menggunakan Cookie di PHP

Belajar Menggunakan Cookie di PHP


Gambar Membuat Trait Untuk Menampung Method dalam OOP PHP

Membuat Trait Untuk Menampung Method dalam OOP PHP



Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *