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

В чем разница между ключевыми словами final, finally и методом finalize в Java?

Sobes Copilot

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

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

sobes.tech AI

final - ключевое слово для объявления констант, запрета наследования класса или переопределения метода.

finally - блок кода в конструкции try-catch-finally, который всегда выполняется, независимо от того, было ли выброшено исключение.

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

Пример использования:

public final class FinalExample { // final класс

    private final int constantValue = 10; // final поле

    public final void doSomething() { // final метод
        // ...
    }

    public static void main(String[] args) {
        try {
            int result = 10 / 0; // Выброс исключения
        } catch (ArithmeticException e) {
            System.out.println("Caught an exception: " + e.getMessage());
        } finally {
            System.out.println("Finally block executed."); // Этот блок всегда выполняется
        }

        FinalExample obj = new FinalExample();
        // obj = null; // Объект станет доступен для сборки мусора

        // Сборщик мусора МОЖЕТ вызвать finalize
        // System.gc(); // Явный вызов сборщика мусора, но не гарантирует выполнение finalize
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("Finalize method called for object: " + this);
        super.finalize();
    }
}

Резюме:

Ключевое слово / Метод Назначение Где используется
final Ограничение: константы, наследование, переопределение Поля, методы, классы
finally Гарантированное выполнение кода Блок в try-catch
finalize Очистка ресурсов перед удалением объекта Метод класса Object, переопределяется