Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech АИ
Одговор од АИ
Ključna reč final se koristi za ograničavanje modifikacije.
- Za promenljive: vrednost promenljive ne može biti promenjena nakon inicijalizacije.
- Za metode: metoda ne može biti prepisana u podklasi.
- Za klase: klasa ne može biti nasledjena.
Metod finalize() je metod klase Object, koji se poziva od strane sakupljača smeća neposredno pre uklanjanja objekta iz memorije, pružajući poslednju mogućnost za izvršenje operacija čišćenja resursa. Nema garancije da će ovaj metod biti pozvan.
// Primer korišćenja final
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Greška pri kompilaciji
class BaseClass {
final void finalMethod() {
// Telo metode
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Greška pri kompilaciji, final metoda
// // Telo metode
// }
}
final class FinalClass {
// Telo klase
}
// class AnotherClass extends FinalClass { // Greška pri kompilaciji, ne može naslediti finalnu klasu
// // Telo klase
// }
// Primer korišćenja finalize
class Resource heavyResource; // Pretpostavlja se neki resurs
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Inicijalizacija resursa
}
@Override
protected void finalize() throws Throwable {
try {
// Čišćenje resursa pre uklanjanja objekta
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // Važno je pozvati finalize roditeljske klase
}
}
}
Razlike:
| Osobina | final | finalize() |
|---|---|---|
| Svrha | Ograničiti modifikaciju (nepromjenjivost, zabrana prepisivanja/nasljeđivanja) | Čišćenje resursa prije nego što ga sakupljač smeća ukloni |
| Primjenjivo na | Varijable, metode, klase | Metoda klase Object |
| Poziva se | Ne poziva se, to je modifikator | Poziva ga sakupljač smeća (bez garancije) |
| Ključna riječ | Da | Ne, to je obična metoda |