Sobes.tech
Junior

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

sobes.tech AI

Отговор от AI

Ключовата дума final се използва за ограничаване на модификацията.

  • За променливи: стойността на променливата не може да бъде променена след инициализация.
  • За методи: методът не може да бъде презаписан в подклас.
  • За класове: класът не може да бъде наследен.

Методът finalize() е метод на класа Object, който се извиква от събирача на боклука непосредствено преди изтриването на обекта от паметта, предоставяйки последната възможност за изпълнение на операции по почистване на ресурси. Няма гаранция, че този метод ще бъде извикан.

// Пример за използване на final
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Грешка при компилация

class BaseClass {
    final void finalMethod() {
        // Тяло на метода
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Грешка при компилация, финален метод
    //     // Тяло на метода
    // }
}

final class FinalClass {
    // Тяло на класа
}

// class AnotherClass extends FinalClass { // Грешка при компилация, не може да наследява финален клас
//     // Тяло на класа
// }
// Пример за използване на finalize
class Resource heavyResource; // Предполага се, че е ресурс

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Инициализация на ресурса
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Почистване на ресурса преди изтриване на обекта
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // Важно е да се извика super.finalize()
        }
    }
}

Разлики:

Характеристика final finalize()
Цел Ограничаване на модификацията (непроменяемост, забрана за презаписване/наследяване) Почистване на ресурси преди обектът да бъде премахнат от събирача на боклука
Прилага се към Променливи, методи, класове Метод на класа Object
Извиква се Не се извиква, това е модификатор Извиква се от събирача на боклука (без гаранция)
Ключова дума Да Не, това е обикновен метод