final Java'da şunlar için kullanılır:
Özellikler ve ince noktalar:
final değişken, ilan edildiğinde veya yapıcıda başlatılmalıdır;final referans, referansı değiştirmeye izin vermez, ancak referans üzerinden nesneyi değiştirmek mümkündür (eğer immutable değilse!);final sınıftan miras almak (örneğin, String, Math) mümkün değildir;final yöntemi override edilemez, miras alınan sınıf olsa bile.final class A {} // class B extends A yapılamaz class Parent { final void foo() { } } class Child extends Parent { // void foo() {} // hata: foo'yu geri döndüremezsiniz } final int COUNT = 10;
final değişkenin işaret ettiği nesnenin durumunu değiştirmek mümkün mü?
Cevap: Evet, eğer bu immutable nesne değilse. Örneğin:
final List<String> names = new ArrayList<>(); names.add("Vasya"); // Bu izin verilir - referans üzerinden nesne değişir, ama referans kendisi değişmez names = new ArrayList<>(); // Derleme hatası
Hikaye
Hikaye
Hikaye
final sınıflara dayanarak bir dış API'yi genişletme ihtiyacı ortaya çıktı. Bunun nedeniyle genişletme yapmak imkansız oldu, mantığı kopyalamak ve iki bağımsız ürün dalını sürdürmek zorunda kaldık, bu da geçişleri zorlaştırdı.