Tutorial OOP Dasar Pada PHP
Final
Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.
Kita bisa menambahkan kata kunci final pada kelas. Kalau suatu kelas sudah final, artinya kelas tersebut sudah tidak bisa diturunkan. Pada saat kita membuat kelas turunan dari kelas final, maka terjadi fatal error dan program langsung berhenti. Biasanya kelas final ini digunakan apabila kita sudah menuliskan kode kelas yang berada di hirarki paling bawah dari silsilah kelas. Dan kita tidak ingin kode pada kelas tersebut diubah dengan cara menurunkannya menjadi kelas lain.
Selain itu, kita juga bisa menggunakan kata kunci final pada method dan const. Tujuannya adalah untuk mencegah agar tidak terjadi override di kelas turunannya. Yang perlu diingat disini adalah property tidak bisa di-final-kan ya. Yang bisa final hanya method dan const saja.
Ini adalah contoh kode final. Misalkan kita membuat kelas Teacher. Kemudian kita buat kelas MathTeacher yang merupakan turunan dari kelas Teacher. Perhatikan pada saat kita deklarasi kelas MathTeacher, kita menambahkan kata kunci final pada bagian paling depannya. Artinya kelas MathTeacher sudah tidak bisa diturunkan lagi. Apabila kita masih membuat kelas turunan dari MathTeacher, maka terjadi Fatal Error.
Agar lebih jelas, kita coba praktek ya. Kita buka lagi kode dari video sebelumnya. Kita lihat di file Teacher.php. Disini kita memiliki 3 buah kelas ya. Kelas pertama adalah Teacher. Kemudian ada kelas MathTeacher yang merupakan turunan dari Teacher. Kemudian ada kelas CodingTeacher yang merupakan turunan dari Teacher.
Kalau misalkan kita tambahkan kata final pada kelas Teacher, artinya kelas Teacher sudah tidak bisa diturunkan lagi. Berarti MathTeacher dan CodingTeacher ini akan menyebabkan error. Kita coba jalankan ya. File terakhir yang kita gunakan untuk instantiate adalah visibility.php. Kita coba jalankan.
Terjadi fatal error ya. Pesan kesalahannya adalah kelas MathTeacher tidak boleh extend dari final class Teacher. Artinya kita tidak boleh membuat kelas turunan dari kelas Teacher, karena kelas Teacher bersifat final.
Kalau kata final kita hapus, maka kode berjalan lancar. Kalau misalkan kita tambahkan kata final pada kelas MathTeacher, maka kode tetap lancar ya. Karena kita tidak membuat kelas turunan dari MathTeacher. Lain halnya kalau CodingTeacher kita ganti menjadi turunan dari MathTeacher. Disini terjadi fatal error lagi ya.
Kita kembalikan dahulu kodenya agar tidak error. Dan kita hapus kata final dari kelas MathTeacher.
Selanjutnya kita coba kata kunci final pada method ya. Kita lihat di kelas Teacher terdapat method showInformation, yang kemudian kita override pada kelas MathTeacher. Jadi kalau method showInformation pada kelas Teacher kita tambahkan kata kunci final, maka terjadi fatal error. Karena method final tidak boleh di override.
Namun method showInformation pada kelas MathTeacher ini sudah tidak di-override lagi ya. Karena sudah tidak ada juga kelas turunannya. Jadi kalau kita tambahkan kata final pada method showInformation milik MathTeacher. Maka tidak terjadi error.
Selanjutnya kita coba kata kunci final pada konstanta ya. Misalkan kita ke kelas Teacher. Kita tambahkan konstanta CLASS_ID dengan nilai 1. Kemudian kita buka file visibility.php. Pertama kita komentari dahulu kode-kode lama-nya ya.
Untuk mengakses konstanta, kita tidak perlu membuat objek. Kita bisa langsung akses dari nama kelasnya. Kita coba echo. Misalkan string 'Teacher '. Lalu kita gabungkan dengan Teacher::CLASS_ID, dan diakhiri dengan PHP_EOL. Kita copy paste kodenya dan kita ganti menjadi MathTeacher. Kita jalankan. Kedua kelas menghasilnya nilai 1 ya.
Untuk konstanta, kita bisa melakukan override pada kelas turunan. Artinya kita bisa mengganti nilai pada konstantanya menjadi nilai lain. Sebagai contoh, kita ke kelas MathTeacher. Disini kita buat konstanta dengan nama yang sama yaitu CLASS_ID, namun nilainya adalah 2. Kita jalankan ya. Kita bisa lihat disini bahwa PHP melakukan override nilai konstanta pada kelas MathTeacher. Nilainya diganti menjadi 2.
Nah, kalau kita ingin mencegah agar tidak terjadi override pada konstanta, maka kita bisa menambahkan kata kunci final pada kelas Teacher. Dan sekarang sudah terjadi fatal error, karena nilai CLASS_ID pada kelas MathTeacher sudah tidak boleh di-override.
Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.
Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.