Pengertian Final Method dan Final Class Pemrograman Objek

♠ Posted by Unknown in at 01.29

Pengertian Final Method dan Final Class Pemrograman Objek


Dalam membuat desain class, kita sering menurunkan sebuah class kepada class lain, atau yang dikenal dengan inheritance/pewarisan. Pemrograman objek juga membolehkan kita untuk ‘menimpa’ method milik parent class dengan method milik child class. Proses menimpa method atau dikenal dengan istilah overridden method ini dilakukan dengan cara membuat nama method yang sama dengan nama method yang ada di dalam parent class.

Bagaimana jika kita menginginkan sebuah mekanisme untuk melarang class anak untuk membuat method yang akan menimpa method class induk? Atau bahkan melarang sebuah class untuk diturunkan sama sekali? Untuk keperluan ini, pemrograman objek PHP menggunakan keyword: final.

Dengan menambahkan keyword final kepada sebuah method, maka method tersebut tidak dapat didefenisikan ulang di dalam child class. Dan jika sebuah class ditambahkan keyword final, maka class tersebut tidak bisa diturunkan sama sekali. Inilah pengertian dari final method dan final class. Dalam PHP, tidak dikenal istilah final property, sehingga tidak ada mekanisme untuk membatasi class anak untuk menimpa nilai property dari class induk.

Untuk membuat final method, kita tinggal menambahkan kata final sebelum keyword hak akses, seperti berikut ini:

final public function nama_method(){
   //... isi method
}

Sedangkan untuk membuat final class, kita menambahkan kata final sebelum nama class, seperti contoh berikut ini:
final class nama_class {
   //... isi class
}

Cara Penggunaan Final Method dan Final Class dalam PHP

Dalam contoh berikut, dibuat class komputer dengan sebuah final method, kemudian mencoba menimpa method ini dari class laptop:

<?php
class komputer{
   final public function lihat_spec(){
     return "Lihat Spesifikasi Komputer";
   }
}
  
class laptop extends komputer{
   public function lihat_spec(){
     return "Lihat Spesifikasi Laptop";
   }
}
  
$laptop_baru=new laptop();
// Jika dijalankan maka akan muncul error sebagai berikut.
// Fatal error: Cannot override final method
// komputer::lihat_spec()
?>

Pada kode program diatas, class komputer memiliki method lihat_spec() yang di-set sebagai final. Kemudian class komputer ini saya turunkan kepada class laptop. Di dalam class laptop, saya mendefenisikan ulang method lihat_spec(), sehingga method lihat_spec() milik class komputer akan tertimpa oleh method lihat_spec() milik class laptop.

Saat saya membuat objek $laptop_baru dari class laptop, PHP akan mengeluarkan error: Cannot override final method komputer::lihat_spec(). Error ini menjelaskan bahwa kita tidak bisa menimpa method lihat_spec() milik class komputer, karena method tersebut telah di set sebagai final.

ika sebuah final method tidak bisa ditimpa nilainya, maka sebuah final class tidak bisa diturunkan kepada class lain. Sebagai contoh kedua kita, berikut adalah kode PHP dimana saya mencoba menurunkan final class:

<?php
final class komputer{
   function lihat_spec(){
     return "Lihat Spesifikasi Komputer";
   }
}
  
class laptop extends komputer{
}
  
$laptop_baru=new laptop();
// Jika dijalankan maka akan terjadi error sebagai berikut.
// Fatal error: Class laptop may not inherit
// from final class (komputer)
?>

Saya membuat sebuah final class komputer, kemudian mencoba menurunkannya kepada class laptop. Saat proses pembuatan objek: $laptop_baru=new laptop(), PHP akan komplain dan mengeluarkan error: Fatal error: Class laptop may not inherit from final class (komputer). Dari hasil error yang didapat, PHP melarang kita untuk menurunkan class komputer, karena telah di set sebagai final class.
 
Sebagai contoh ketiga, walaupun PHP memang tidak memiliki final property, namun mari kita coba membuatnya:

<?php
class komputer {
   final $merk;
}
  
$laptop_baru=new komputer();
// Fatal error: Cannot declare property komputer::$merk final,
// the final modifier is allowed only for methods and classes
?>
Dari hasil error yang didapat, ternyata PHP memang tidak mendukung final property.


Sumber : http://www.duniailkom.com








0 komentar:

Posting Komentar