Tutorial Belajar OOP PHP Part 14: Pengertian Final Method dan Final Class Pemrograman Objek

Setelah sebelumnya mempelajari tentang class constant, dalam tutorial belajar OOP PHP kali ini kita akan membahas pengertian final method dan final class dalam pemrograman objek PHP.


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
?>

Dari hasil error yang didapat, ternyata PHP memang tidak mendukung final property :)


Final method dan final class bisa digunakan untuk membuat desain class yang terstruktur. Dalam tutorial OOP PHP selanjutnya, kita akan membahas tentang Pengertian Abstract Class dan Abstract Method dalam Pemrograman Objek PHP.

6 Comments

  1. Fahruddin Yusuf Habibi
    01 Mar 16
    • Andre
      01 Mar 16
  2. Anonymous
    21 Mar 17
    • Andre
      22 Mar 17
    • ilham
      02 Aug 17
  3. Anonymous
    13 Feb 18

Add Comment

Leave a Reply to Anonymous Cancel reply