Sobes.tech
Junior

Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?

sobes.tech AI

Odpowiedź od AI

Ključna riječ final se koristi za ograničavanje modifikacije.

  • Za varijable: vrijednost varijable ne može se promijeniti nakon inicijalizacije.
  • Za metode: metoda se ne može prepisati u podklasi.
  • Za klase: klasa se ne može naslijediti.

Metoda finalize() je metoda klase Object, koja se poziva od strane sakupljača smeća neposredno prije uklanjanja objekta iz memorije, pružajući posljednju priliku za izvršavanje operacija čišćenja resursa. Nema garancije da će se ta metoda pozvati.

// Primjer korištenja final
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Greška pri kompilaciji

class BaseClass {
    final void finalMethod() {
        // Tijelo metode
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Greška pri kompilaciji, metoda final
    //     // Tijelo metode
    // }
}

final class FinalClass {
    // Tijelo klase
}

// class AnotherClass extends FinalClass { // Greška pri kompilaciji, ne može naslijediti finalnu klasu
//     // Tijelo klase
// }
// Primjer korištenja finalize
class Resource heavyResource; // Pretpostavlja se neka resurs

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Inicijalizacija resursa
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Čišćenje resursa prije uklanjanja objekta
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // Važno je pozvati finalize roditeljske klase
        }
    }
}

Razlike:

Značajka final finalize()
Svrha Ograničiti modifikaciju (nepromjenjivost, zabrana prepisivanja/korištenja nasljeđivanja) Čišćenje resursa prije nego što ga sakupljač smeća ukloni
Primjenjuje se 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