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

Posted on

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


Pengertian Final Method dan Final Class

Pada merancang desain class, kita sering menurunkan sebuah class kepada class lain, atau yang dikenal dengan inheritance/pewarisan. Pemrograman objek pun membolehkan kita bagi ‘menimpa’ method milik parent class dengan method milik child class. Proses menimpa method atau dikenal dengan istilah overridden method ini dilakukan dengan cara merancang nama method yang sama dengan nama method yang terdapat di pada parent class.

Mengenai overridden method, telah kita bahas pada panduan belajar oop php: cara mengakses property dan method parent class.

Bagaimana bila kita menginginkan sebuah mekanisme bagi melarang class anak bagi merancang method yang akan menimpa method class induk? Atau bahkan melarang sebuah class bagi diturunkan sama sekali? Bagi kebutuhan ini, pemrograman objek PHP menggunakan keyword: final.

Dengan menambahkan keyword final kepada sebuah method, karenanya method tersebut tak dapat didefenisikan ulang di pada child class. Dan bila sebuah class ditambahkan keyword final, karenanya class tersebut tak dapat diturunkan sama sekali. Inilah pengertian dari final method dan final class.

Pada PHP, tak dikenal istilah final property, sehingga tak ada mekanisme bagi membatasi class anak bagi menimpa nilai property dari class induk.

Bagi merancang final method, kita tinggal menambahkan kata final sebelum keyword hak akses, seperti berikut ini:

Sedangkan bagi merancang final class, kita menambahkan kata final sebelum nama class, seperti contoh berikut ini:


Cara Pemakaian Final Method dan Final Class pada PHP

Bagi membahas cara menggunakan final method dan final class, pertama-tama kali mari kita lihat cara penulisan dan pemakaian final method pada PHP.

Pada contoh berikut, saya merancang class komputer dengan sebuah final method, kemudian saya mencoba menimpa method ini dari class laptop:

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

Ketika saya merancang objek $laptop_baru dari class laptop, PHP akan mengeluarkan error: Cannot override final method komputer::lihat_spec(). Error ini menjelaskan bahwa kita tak dapat menimpa method lihat_spec() milik class komputer, karena method tersebut telah di set selaku final.

Jikalau sebuah final method tak dapat ditimpa nilainya, karenanya sebuah final class tak dapat diturunkan kepada class lain. Selaku contoh kedua kita, berikut yaitu kode PHP dimana saya mencoba menurunkan final class:

Saya merancang sebuah final class komputer, kemudian mencoba menurunkannya kepada class laptop. Ketika proses perancangan 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 bagi menurunkan class komputer, karena telah di set selaku final class.

Selaku contoh ketiga, walaupun PHP memang tak mempunyai final property, namun mari kita coba membuatnya:

Dari hasil error yang didapat, ternyata PHP memang tak mendukung final property 🙂


Final method dan final class dapat digunakan bagi merancang desain class yang terstruktur. Pada panduan OOP PHP berikutnya, kita akan membahas mengenai Pengertian Abstract Class dan Abstract Method pada Pemrograman Objek PHP.


Sumber https://www.duniailkom.com/