Sobes.tech
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