Sobes.tech
Junior

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

sobes.tech MI

Válasz az MI-től

A final kulcsszó a módosítás korlátozására szolgál.

  • Változók esetén: a változó értéke nem módosítható az inicializálás után.
  • Metódusok esetén: a metódus nem írható felül az alosztályban.
  • Osztályok esetén: az osztály nem örökölhető.

A finalize() a Object osztály egyik metódusa, amelyet a szemétgyűjtő hív meg közvetlenül az objektum memória-ból való eltávolítása előtt, utolsó lehetőségként a erőforrások tisztítására. Nincs garancia arra, hogy ez a metódus meghívásra kerül.

// A final használatának példája
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Fordítási hiba

class BaseClass {
    final void finalMethod() {
        // A metódus törzse
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Fordítási hiba, final metódus
    //     // A metódus törzse
    // }
}

final class FinalClass {
    // Osztály törzse
}

// class AnotherClass extends FinalClass { // Fordítási hiba, nem örökölhető final osztályból
//     // Osztály törzse
// }
// A finalize() használatának példája
class Resource heavyResource; // Egy erőforrás

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Erőforrás inicializálása
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Az erőforrás tisztítása az objektum eltávolítása előtt
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // Fontos meghívni a szülő finalize() metódusát
        }
    }
}

Különbségek:

Jellemző final finalize()
Cél A módosítás korlátozása (változhatatlanság, felülírás/öröklés tilalma) Erőforrások tisztítása az objektum eltávolítása előtt a szemétgyűjtő által
Alkalmazásra kerül Változók, metódusok, osztályok Az Object osztály metódusa
Hívásra kerül Nem hívódik meg, csak módosító A szemétgyűjtő hívja meg (garancia nélkül)
Kulcsszó Igen Nem, ez egy szokásos metódus