Junior
Какво представляват ключовите думи final и finalize в Java и какви са разликите между тях?
sobes.tech AI
Отговор от AI
В Java final и finalize са различни понятия с различни цели:
finalе ключова дума, която се използва за декларация:- Константи (променливи, които не могат да бъдат променяни след инициализация).
- Методи, които не могат да бъдат презаписвани в подкласове.
- Класове, които не могат да бъдат наследявани.
Пример:
final int x = 10; // x не може да бъде променен
final class MyClass {} // класът не може да бъде наследен
final void myMethod() {} // методът не може да бъде презаписан
finalize()е метод на класаObject, който се извиква от събирача на отпадъци преди изтриването на обекта от паметта. Той е предназначен за освобождаване на ресурси, но употребата му не се препоръчва, тъй като извикването му не е гарантирано и може да доведе до непредсказуемо поведение.
Пример:
@Override
protected void finalize() throws Throwable {
// освобождаване на ресурси
super.finalize();
}
Разлики:
finalе ключова дума за контрол на модификацията на кода.finalizeе метод за почистване преди събиране на отпадъци, остарял и не се препоръчва за употреба.