Final Anahtar Kelimesi: Değişmez Değişkenler ve Sınıflar Oluşturma

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Final: Java'da Değişmezlik Kuralları



1. Final Değişkenler (Sabitler)​


Bir değişken final olarak tanımlandığında, ona sadece bir kez değer ataması yapılabilir. Atama yapıldıktan sonra değeri değiştirilemez.

Primitive Tiplerde: Değerin kendisi değiştirilemez.

Reference Tiplerde: Nesnenin referansı (bellek adresi) değiştirilemez. Yani değişken başka bir nesneyi işaret edemez ancak nesnenin içindeki alanlar (eğer final değillerse) değiştirilebilir.

Java:
final double PI = 3.14159;
// PI = 3.14; // HATA! Değiştirilemez.

final int[] sayilar = {1, 2, 3};
sayilar[0] = 10; // ÇALIŞIR (İçerik değişebilir)
// sayilar = new int[5]; // HATA! Referans değiştirilemez.

2. Final Metotlar​


Bir metodu final yaparsanız, bu metot alt sınıflar tarafından Override (Ezme) edilemez.

Neden Kullanılır? Metodun mantığının çok kritik olduğu ve alt sınıflar tarafından değiştirilmesinin (bozulmasının) güvenlik riski yaratacağı durumlarda kullanılır.

Java:
class Veritabani {
final void baglan() {
System.out.println("Standart güvenli bağlantı kuruluyor...");
}
}

class OzelVeritabani extends Veritabani {
// void baglan() { ... } // HATA! Bu metot override edilemez.
}

3. Final Sınıflar​


Bir sınıf final olarak tanımlanırsa, o sınıftan miras (inheritance) alınamaz. Yani o sınıfın bir alt sınıfı (subclass) olamaz.

En Meşhur Örnek: Java'daki String sınıfı final bir sınıftır. Kimse String sınıfını extends edip onun temel davranışlarını bozamaz.

Neden Kullanılır? Güvenlik ve değişmezlik (immutability) sağlamak için.

Java:
final class GuvenlikDuvari {
// ...
}

// class HackerDuvari extends GuvenlikDuvari { } // HATA! Miras alınamaz.

4. Neden Final Kullanmalıyız?​



  • []Güvenlik (Security): Kodun kritik kısımlarının istem dışı veya kötü niyetli değiştirilmesini önler.
    []Performans: Java derleyicisi (JIT), final yapıların değişmeyeceğini bildiği için kod üzerinde daha fazla optimizasyon yapabilir.
    []Hata Yönetimi: Sabit değerlerin (Örn: MAX_USER_LIMIT) programın ortasında kazara değiştirilip bug oluşturmasını engeller.
    []Thread Safety (İş Parçacığı Güvenliği): Değişmez (Immutable) nesneler, çoklu iş parçacığı ortamlarında daha güvenli çalışır.

Kullanım Özeti Table​


Kullanılan YerEtkisi
DeğişkenDeğeri değiştirilemez (Sabit olur).
MetotOverride edilemez (Ezilemez).
SınıfInherit edilemez (Miras alınamaz).
ParametreMetot içinde parametrenin değeri değiştirilemez.



Sonuç

final anahtar kelimesi, "Değişmezlik" (Immutability) prensibinin kapısını açar. Temiz kod yazarken, bir değişkenin değerinin değişmesine gerek yoksa onu final yapmak her zaman iyi bir alışkanlıktır. Bu, hem kodu okuyan diğer geliştiricilere "bu değer sabittir" mesajı verir hem de uygulamanızın daha sağlam olmasını sağlar.
 
Geri
Üst