Назад к вопросам
Junior
68
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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
    //     // Тело метода
    // }
}

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

// class AnotherClass extends FinalClass { // Ошибка компиляции, нельзя наследовать final класс
//     // Тело класса
// }
// Пример использования 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(); // Важно вызвать finalize родительского класса
        }
    }
}

Отличия:

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