Sobes.tech
Junior

Czym są słowa kluczowe final i finalize w Java i czym się różnią?

sobes.tech AI

Odpowiedź od AI

W Javie final i finalize to różne pojęcia o różnych celach:

  • final jest słowem kluczowym używanym do deklarowania:
    • Stałych (zmiennych, które nie mogą być zmienione po inicjalizacji).
    • Metod, które nie mogą być nadpisane w podklasach.
    • Klas, które nie mogą być dziedziczone.

Przykład:

final int x = 10; // x nie może być zmienione
final class MyClass {} // klasa nie może być dziedziczona
final void myMethod() {} // metoda nie może być nadpisana
  • finalize() jest metodą klasy Object, wywoływaną przez garbage collector przed usunięciem obiektu z pamięci. Służy do zwalniania zasobów, ale jej użycie nie jest zalecane, ponieważ wywołanie nie jest gwarantowane i może prowadzić do nieprzewidywalnego zachowania.

Przykład:

@Override
protected void finalize() throws Throwable {
    // zwalnianie zasobów
    super.finalize();
}

Różnice:

  • final to słowo kluczowe do kontroli modyfikacji kodu.
  • finalize to metoda do czyszczenia przed zbieraniem śmieci, przestarzała i niezalecana.