Tutorial OOP Java Part 13: Pengertian dan Fungsi Perintah final

Dalam tutorial OOP Java kali ini kita akan bahas pengertian dan fungsi dari perintah final.


Pengertian Final Keyword

Dalam bahasa Java, final adalah perintah khusus yang mencegah sebuah class, property, atau method untuk ditimpa nilainya. Keyword final ini termasuk ke dalam kelompok modifier dalam bahasa Java, yakni perintah yang memodifikasi perilaku default sebuah class, property atau method.

Kita akan bahas dengan contoh kode program apa efek dari perintah final untuk class, property dan juga method.


Mencegah Penurunan Class (Final Class)

Dengan keyword final, kita bisa mencegah sebuah class untuk diturunkan kepada class lain. Berikut contoh kode programnya:

final class Komputer {
  String processor = "Intel Core i9";
  String cekInfo() { 
    return "Ini berasal dari class Komputer"; 
  }
}
  
class Laptop extends Komputer {
  String cekInfo() { 
    return "Ini berasal dari class Komputer"; 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
      
    Laptop laptopAndi = new Laptop();
    System.out.println(laptopAndi.cekInfo());
    
  }
}

Di baris 1, saya menambah keyword final sebelum penulisan class Komputer. Ini menginstruksikan compiler bahasa Java bahwa class Komputer sudah final dan tidak bisa diturunkan lagi.

Ketika class Laptop mencoba mewarisi class Komputer di baris 8, itu akan menghasilkan pesan error berikut:

BelajarJava.java:8: error: cannot inherit from final Komputer
class Laptop extends Komputer {
             ^
1 error

Disini, compiler bahasa Java menolak untuk menurunkan class Komputer.


Mencegah Perubahan Nilai Property (Final Property)

Jika keyword final ditempatkan sebelum nama property, itu akan mencegah perubahan dari nilai property tersebut:

class Laptop {
  final String processor = "Intel Core i9";
  String cekInfo() { 
    return "Ini berasal dari class Komputer"; 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop();
    laptopAndi.processor = "AMD Ryzen 9";
  }
}

Di baris 2, property processor di set dengan keyword final. Maka ketika isinya coba diubah pada baris 11, akan menghasilkan error:

BelajarJava.java:11: error: cannot assign a value to final variable processor
laptopAndi.processor = "AMD Ryzen 9";
           ^
1 error

Praktek ini mirip dengan membuat sebuah konstanta dalam bahasa pemrograman lain, yakni variabel yang nilainya tidak bisa diubah lagi.

Selain tidak bisa diubah dalam satu class, nilai final property juga tidak bisa ditimpa oleh class turunan:

class Komputer {
  final String processor = "Intel Core i9";
}
  
class Laptop extends Komputer {
  Laptop() { 
    super.processor = "AMD Ryzen 9";
  }
}
  
class BelajarJava {
  public static void main(String args[]){ 
    Laptop laptopAndi = new Laptop();
  }
}

Property processor di class Komputer saya set sebagai final, maka ketika constructor class Laptop mencoba mengubah nilainya di baris 7, itu juga akan error.


Mencegah Penimpaan Method (Final Method)

Untuk versi method, keyword final membuat method tersebut tidak bisa ditimpa atau didefinisikan ulang oleh class turunan. Berikut contoh prakteknya:

class Komputer {
  final String cekInfo() { 
    return "Ini berasal dari class Komputer"; 
  }
}
  
class Laptop extends Komputer {
  String cekInfo() { 
    return "Ini berasal dari class Laptop"; 
  }
}
  
class BelajarJava {
  public static void main(String args[]){ 
    Laptop laptopAndi = new Laptop();
  }
}

Hasil kode program:

BelajarJava.java:8: 
  error: cekInfo() in Laptop cannot override cekInfo() in Komputer
  String cekInfo() { 
         ^
  overridden method is final
1 error

Di dalam class Komputer, method cekInfo() di set sebagai final method. Maka ketika class Laptop mencoba mendefinisikan ulang method cekInfo(), hasilnya akan error.


Itulah materi kita tentang pengertian dan fungsi perintah final dalam bahasa Java. Perintah final akan mencegah sebuah class, property dan method untuk ditimpa, karena nilainya sudah… final.

Lanjut, dalam tutorial OOP Java berikutnya akan dibahas tentang cara membuat package Java.

Add Comment