Назад к вопросам
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, переопределяется |