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:
finaljest 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ą klasyObject, 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:
finalto słowo kluczowe do kontroli modyfikacji kodu.finalizeto metoda do czyszczenia przed zbieraniem śmieci, przestarzała i niezalecana.