Sobes.tech
Junior

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

sobes.tech AI

AIdan javob

Açar söz final, dəyişiklikləri məhdudlaşdırmaq üçün istifadə olunur.

  • Dəyişənlər üçün: dəyişənin dəyəri, ilkinləşdirildikdən sonra dəyişdirilə bilməz.
  • Yöntəmlər üçün: metod, alt sinifdə yenidən təyin edilə bilməz.
  • Siniflər üçün: sinif miras alınmaz.

finalize() metodu, Object sinifinin bir metodudur və yaddaşdan obyekt silinməzdən əvvəl çöp toplayıcı tərəfindən çağrılır, resursların təmizlənməsi üçün son fürsət verir. Bu metodun çağrılacağına dair heç bir zəmanət yoxdur.

// final istifadəsi nümunəsi
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Tərtib səhvi

class BaseClass {
    final void finalMethod() {
        // Metodun gövdəsi
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Tərtib səhvi, final metod
    //     // Metodun gövdəsi
    // }
}

final class FinalClass {
    // Sinifin gövdəsi
}

// class AnotherClass extends FinalClass { // Tərtib səhvi, final sinifdən miras alınmaz
//     // Sinifin gövdəsi
// }
// finalize() istifadəsi nümunəsi
class Resource heavyResource; // Bir resurs

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Resursun başlanğıcı
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Obyekt silinməzdən əvvəl resursu təmizləyin
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // super.finalize() çağırılması vacibdir
        }
    }
}

Fərqlər:

Xüsusiyyət final finalize()
Məqsəd Dəyişiklikləri məhdudlaşdırmaq (dəyişməzlik, yenidən təyin etmə/qorumaq) Obyekt silinməzdən əvvəl resursların təmizlənməsi
Tətbiq olunan Dəyişənlər, metodlar, siniflər Object sinifinin metodu
Çağırılır Çağırılmır, bu bir modifikatordur Çöp toplayıcı tərəfindən çağrılır (zəmanət yoxdur)
Açar söz Bəli Xeyr, bu adi bir metoddur