Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech KI
Antwort von AI
Das Schlüsselwort final wird verwendet, um die Modifikation einzuschränken.
- Für Variablen: Der Wert der Variablen kann nach der Initialisierung nicht geändert werden.
- Für Methoden: Die Methode kann in einer Unterklasse nicht überschrieben werden.
- Für Klassen: Die Klasse kann nicht vererbt werden.
Die Methode finalize() ist eine Methode der Klasse Object, die vom Müllsammler unmittelbar vor der Entfernung des Objekts aus dem Speicher aufgerufen wird, um die letzte Gelegenheit zur Bereinigung von Ressourcen zu bieten. Es gibt keine Garantie, dass diese Methode aufgerufen wird.
// Beispiel für die Verwendung von final
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Kompilierungsfehler
class BaseClass {
final void finalMethod() {
// Methodenkörper
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Kompilierungsfehler, Methode final
// // Methodenkörper
// }
}
final class FinalClass {
// Klassentext
}
// class AnotherClass extends FinalClass { // Kompilierungsfehler, kann nicht von finaler Klasse erben
// // Klassentext
// }
// Beispiel für die Verwendung von finalize
class Resource heavyResource; // Es wird eine Ressource angenommen
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Ressource initialisieren
}
@Override
protected void finalize() throws Throwable {
try {
// Ressource vor der Entfernung des Objekts bereinigen
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // Es ist wichtig, finalize der Elternklasse aufzurufen
}
}
}
Unterschiede:
| Merkmal | final | finalize() |
|---|---|---|
| Zweck | Modifikation einschränken (Unveränderlichkeit, Verbot des Überschreibens/Vererbens) | Ressourcenbereinigung vor der Entfernung des Objekts durch den Müllsammler |
| Gilt für | Variablen, Methoden, Klassen | Methode der Klasse Object |
| Wird aufgerufen | Wird nicht aufgerufen, ist ein Modifikator | Wird vom Müllsammler aufgerufen (ohne Garantie) |
| Schlüsselwort | Ja | Nein, es ist eine gewöhnliche Methode |