Dalam Java, kata kunci final memiliki tiga buah fungsi,
yaitu sebagai berikut :
- Apabila digunakan untuk
mendeklarasikan variabel, maka nilai dari variabel tersebut tidak dapat
diubah atau diperankan sebagai sebuah konstanta.
- Apabila digunakan untuk
mendeklarasikan menthod, maka menthod tersebut
sudah tidak dapat di-override atau diperbaruhi lagi oleh
class-class turunannya.
- Apabila digunakan untuk
mendefinisikan class, maka class tersebut sudah tidak dapat diturunkan
lagi menjadi class baru lainnya.
Apabila kita ingin mengunakan kata kunci final untuk
mendeklarasikan suatu variabel sebagai konstanta, maka kita perlu mengisikan
nilai kedalam variabel tersebut. Nilai tersebut akan bersifat tetap atau tidak
dapat diubah selama eksekusi program berlangsung. Berikut ini bentuk umum dari
pendeklarasian sebuah konstanta di dalam java.
tingkat-akses final
tipe-data nama-konstanta = nilai;
Berikut ini beberapa contoh pendeklarasian sebuah konstanta :
final double P1 = 3.1416;
private final int ERROR = -1;
private final int BAHASA_INDONESIA = 0;
private final int BAHASA_INGRIS =1;
private final String JUDUL_MENU_FILE = "File";
private final String
JUDUL_TOMBOL_KELUAR = "Exit";
Berikut ini contoh program yang akan menunjukkan penggunaan kata
kunci final untuk mendeklarasikan sebuah konstanta.
class Stack {
private final int MAX = 10; // Mendeklarasikan konstanta MAX
private int[] stack = new int[MAX];
private int atas;
// Constructor
Stack() {
atas = -1;
}
// Menyimpan nilai ke dalam stack
void push(int nilai) {
if (atas != 9) {
stack[++atas] = nilai;
} else {
System.out.println("Stack
penuh...");
}
}
// Mengambil nilai dari dalam stack
int pop() {
if (atas >= 0) {
return stack[atas--];
} else {
System.out.println("Stack masih
kosong...");
return 0;
}
}
}
class DemoFinal {
public static void main(String[] args) {
Stack s = new Stack();
// Memasukkan nilai-nilai ke dalam stack
for (int i=1; i<=10; i++) {
s.push(i * 10);
}
// Mengambil nilai-nilai yang terdapat di dalam stack
for (int i=1; i<=10; i++) {
System.out.println(s.pop());
}
}
}