Memahami Kata Kunci final Java: Variabel, Metode, dan Kelas
Java final Keyword
Jelajahi bagaimana kata kunci final Java melindungi konstanta, mencegah peng-overriding metode, dan memblokir pewarisan kelas, dengan contoh yang jelas.
Di Java, kata kunci final menunjukkan bahwa sebuah entitas—baik variabel, metode, atau kelas—tidak dapat diubah setelah definisinya pertama kali. Kontrak imutabilitas ini ditaati pada waktu kompilasi, memberikan jaminan kepada pengembang tentang perilaku program.
- Variabel final tidak dapat di-assign ulang.
- Metode final tidak dapat di-override di subclass.
- Kelas final tidak dapat di-extend.
1. Variabel Final
Saat Anda mendeklarasikan variabel sebagai final, nilainya terkunci setelah penetapan pertama. Ini adalah cara standar untuk mendefinisikan konstanta di Java.
class Main { public static void main(String[] args) { // Deklarasikan variabel final final int AGE = 32; // Baris berikut akan menyebabkan kesalahan kompilasi // AGE = 45; System.out.println("Usia: " + AGE); } }
Kompiler akan menolak mengompilasi kode yang mencoba untuk me-assign ulang AGE, mengeluarkan kesalahan seperti:
cannot assign a value to final variable AGE AGE = 45; ^
Tips: Menurut konvensi, nama konstanta ditulis dengan huruf kapital semua dengan underscore (misalnya, MAX_SIZE) untuk menunjukkan imutabilitasnya.
2. Metode Final
Metode final adalah bagian dari jaringan keamanan pewarisan Java. Saat suatu metode ditandai final, tidak ada subclass yang dapat meng-override-nya, mempertahankan implementasi aslinya.
class FinalDemo { // Metode final public final void display() { System.out.println("Ini adalah metode final."); } } class Main extends FinalDemo { // Coba override – menghasilkan kesalahan kompilasi public final void display() { System.out.println("Metode final di-override."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } }
Mencoba untuk meng-override metode display() akan menghasilkan kesalahan seperti:
display() in Main cannot override display() in FinalDemo public final void display() { ^ overridden method is final
3. Kelas Final
Sebuah kelas final tidak dapat di-subclass. Ini sering digunakan untuk tipe yang penting untuk keamanan atau imutabel, memastikan bahwa perilaku kelas tetap tidak berubah.
// Definisi kelas final final class FinalClass { public void display() { System.out.println("Ini adalah kelas final."); } } // Mencoba untuk memperluas kelas final class Main extends FinalClass { public void display() { System.out.println("Kelas final di-override."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } }
Kompiler akan menolak pewarisan ini dengan:
cannot inherit from final FinalClass class Main extends FinalClass { ^