Bag. 14 : Pengertian Final Method dan Final Class Pemrograman Objek
Pengertian Final Method dan Final Class
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. Mengenai overridden method, telah kita bahas
dalam tutorial belajar oop php: cara mengakses property dan method 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
Untuk membahas cara menggunakan final method dan final class,
pertama kali mari kita lihat cara penulisan dan penggunaan final method dalam
PHP.
Dalam contoh berikut, saya membuat class komputer dengan sebuah
final method, kemudian saya 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();
//
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.
Jika 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();
//
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
?>

Post a Comment