Sobes.tech
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 е метод за почистване преди събиране на отпадъци, остарял и не се препоръчва за употреба.