Sobes.tech
Junior

Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?

sobes.tech yapay zeka

AI'dan gelen yanıt

Anahtar kelime final, değişikliği sınırlamak için kullanılır.

  • Değişkenler için: Değişkenin değeri, başlatıldıktan sonra değiştirilemez.
  • Yöntemler için: Yöntem, alt sınıfta yeniden tanımlanamaz.
  • Sınıflar için: Sınıf kalıtılamaz.

finalize() yöntemi, Object sınıfının bir yöntemidir ve nesne bellekten silinmeden hemen önce çöp toplayıcı tarafından çağrılır, kaynak temizleme işlemlerini gerçekleştirmek için son fırsatı sağlar. Bu yöntemin çağrılacağına dair garanti yoktur.

// final kullanımı örneği
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Derleme hatası

class BaseClass {
    final void finalMethod() {
        // Yöntem gövdesi
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Derleme hatası, final yöntem
    //     // Yöntem gövdesi
    // }
}

final class FinalClass {
    // Sınıf gövdesi
}

// class AnotherClass extends FinalClass { // Derleme hatası, final sınıf kalıtılamaz
//     // Sınıf gövdesi
// }
// finalize() kullanımı örneği
class Resource heavyResource; // Bir kaynak varsayılır

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Kaynak başlatılır
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Nesne silinmeden önce kaynağı temizle
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // super.finalize() çağrısı önemlidir
        }
    }
}

Farklar:

Özellik final finalize()
Amacı Değişikliği sınırlandırmak (değişmezlik, yeniden tanımlama/kalıtım yasağı) Nesne silinmeden önce kaynakları temizleme
Uygulanabilir olduğu yerler Değişkenler, yöntemler, sınıflar Object sınıfının yöntemi
Çağrılır mı Çağrılmaz, bir modifikatördür Çöp toplayıcı tarafından çağrılır (garanti yok)
Anahtar kelime Evet Hayır, normal bir yöntemdir