Java’da Final vs Finally vs Finalize

sametklou

Java’da Final vs Finally vs Finalize

Java programlama dilinde sıkça karıştırılan ve farklı anlamlara gelen kavramlar olan final, finally ve finalize anahtar kelimelerini detaylı bir şekilde inceleyeceğiz.

Final Anahtar Kelimesi

final anahtar kelimesi Java'da değişkenler, metodlar ve sınıflar için kullanılabilen bir anahtar kelimedir.

  • Değişkenler: Bir değişkenin final olarak tanımlanması durumunda, o değişkenin değeri değiştirilemez. Yani sadece bir kez değer atanabilir.

    final int sayi = 5;
    
  • Metodlar: Bir metodun final olarak tanımlanması durumunda, bu metod alt sınıflar tarafından ezilemez (override) ve farklı bir implementasyon verilemez.

    public final void metod(){
      // metoda ait kod bloğu
    }
    
  • Sınıflar: Bir sınıfın final olarak tanımlanması durumunda, bu sınıfın alt sınıfları oluşturulamaz.

    public final class Sinif{
      // sınıfa ait kod bloğu
    }
    

Finally Anahtar Kelimesi

finally bloğu, try-catch bloklarında kullanılan ve her durumda çalıştırılmasını istediğimiz kodları içeren bir bloktur. Özellikle kaynakların serbest bırakılması gibi işlemler bu blokta gerçekleştirilir.

try {
    // kod bloğu
} catch (Exception e) {
    // hata durumu
} finally {
    // her durumda çalışacak kod bloğu
}

Finalize Metodu

finalize() metodu, Java'da java.lang.Object sınıfından miras alan her sınıfta bulunan bir metoddur. Bu metod, bir nesne garbage collector tarafından bellekten silinmeden önce çağrılır.

@Override
protected void finalize() throws Throwable {
    // nesne yok edilmeden önce yapılacak işlemler
}

Bu metot, eski Java versiyonlarında nesne temizliği için kullanılırken, günümüzde try-with-resources blokları ve AutoCloseable interface'i gibi mekanizmalar tercih edilmektedir.

Java'da final, finally ve finalize kavramları arasındaki farkları böylece genel hatlarıyla öğrenmiş olduk. Konu hakkında daha fazla detaylı bilgi edinmek için Java dokümantasyonunu inceleyebilirsiniz.