(1) endgültig: Modifikator (Schlüsselwort). Wenn eine Klasse endgültig erklärt wird, bedeutet dies, dass sie keine neuen Unterklassen ableiten kann und als Elternklasse nicht vererbt werden kann. Daher kann eine Klasse nicht sowohl abstrakt als auch endgültig deklariert werden. Das Deklarieren von Variablen oder Methoden als endgültig kann sicherstellen, dass sie während der Verwendung nicht verändert werden. Als endgültig deklarierter Variablen müssen bei der Deklaration einen Anfangswert haben und können nur in zukünftigen Referenzen gelesen werden und können nicht geändert werden. Methoden, die als endgültig deklariert sind, können ebenfalls verwendet werden und können nicht überladen werden.
(2) Schließlich: Bietet schließlich Blöcke, um einen Clearing -Betrieb während der Ausnahmebehandlung durchzuführen. Wenn eine Ausnahme ausgelöst wird, wird die passende Fangklausel ausgeführt, und die Steuerung wird in den schließlich Block (falls vorhanden) eingegeben.
(3) Finalize: Methodenname. Die Java -Technologie ermöglicht die Verwendung der methode finalize () die erforderliche Reinigung, bevor der Garbage Collector Objekte aus dem Speicher enträt. Diese Methode wird vom Müllsammler aufgerufen, wenn festgestellt wird, dass das Objekt nicht referenziert wird. Es ist in der Objektklasse definiert, sodass alle Klassen es erben. Die Unterklasse überschreibt die Methode Finalize (), um Systemressourcen zu organisieren oder andere Reinigungsarbeiten auszuführen. Die Methode Finalize () wird auf das Objekt aufgerufen, bevor der Müllsammler es löscht.
Das Obige kann ein wenig vage sein. Lassen Sie uns detaillierter diskutieren
1. Verschiedene Eigenschaften
(1) Finale ist das Schlüsselwort;
(2) Finalize () ist eine Methode;
(3) schließlich ist ein Blockflag, das in Versuchanweisungen verwendet wird.
Zweitens Funktion
(1) Finale ist ein Schlüsselwort, das zur Identifizierung von Konstanten verwendet wird, und die von der Finale identifizierten Schlüsselwörter werden im konstanten Pool gespeichert (die spezifische Verwendung von endgültigen Konstanten wird unten eingeführt).
(2) Die Methode Finalize () ist in Objekt definiert. Es wird verwendet, um das JVM zum Müll zu rufen, das das Objekt sammelt, wenn das Objekt "verschwindet", ähnlich wie der Destruktor in C ++. Wenn Sie benutzerdefiniert sind, wird es verwendet, um die vom Objekt besetzten Ressourcen (z. B. I/0-Operationen) freizusetzen.
(3) Schließlich wird {} verwendet, um den Codeblock zu identifizieren und mit Try {} zusammenzuarbeiten. Unabhängig davon, ob der Code im Versuch ausgeführt wurde oder nicht (hier bezieht sich auf eine Ausnahme), wird das Programm im Codeblock definitiv durchgeführt.
3.. Detaillierte Erklärung
1 Definieren Sie Variablen
1.1 Wenn endgültig eine Grundtypvariable definiert, muss bei der Erklärung oder im Konstruktor an anderen Stellen eine variable Initialisierung verwendet werden. Die durch dieses Schlüsselwort definierten Konstanten können außer der Initialisierungsstufe nicht geändert werden.
1.2 Finale definiert einen Verweis auf ein Objekt, und die Initialisierung der Referenz stimmt mit den Anforderungen überein, wenn eine Konstante definiert wird. Der Inhalt des durch das Schlüsselworts definierten Objekts kann geändert werden, auf die Adresse jedoch nicht geändert werden kann.
2 Parameter definieren
Wenn die durch diesen Parameter definierte Variable in die Methode übergeben wird, kann die Methode den Inhalt des Parameters (Fehler) nicht ändern, der den Modifikationsregeln für die Definition der Variablen entspricht. Die Java -Methode übergibt den Wert beim Übergeben des Basistyps in der Java -Methode, und die Java -Methode übergibt den Parameter für das Objekt. <Schließlich hängt die Methode über die Methode in Java ab, hängt von der Übergabe einer "Kopie" ab: Erstellen Sie für den Basistyp zuerst eine Kopie, weisen Sie den übergebenen Wert dem Kopieren zu und arbeiten Sie dann mit Kopie. Erstellen Sie für den Objekttyp zuerst eine Referenzkopie und weisen Sie die übergebene Objektreferenz zu Copy> zu
Zum Beispiel: Methode (endgültiger Int -Test);
Einige Bücher sagen, dass die Parameter der endgültigen Definition hier, insbesondere die Parameter des Objekts, sehr nützlich sind und den Inhalt des Objekts innerhalb der Methode nicht ändern können. Diese Aussage ist falsch! Ich denke auch, dass es auf diese Weise einige funktionale Programmiermerkmale gibt. Sie können den Inhalt des Objekts nicht ändern. Hier können Sie den Inhalt des Objekts noch ändern.
? ? Was nutzt dieser Parameter? ?
String ist geboren, um endgültig zu sein!
3 Definitionsmethode
(1) Methoden, die mit dem endgültigen Schlüsselwort definiert sind, können nicht durch Unterklassen vererbt werden.
(2) Erlauben Sie dem Compiler, alle Aufrufe in diese Methode in das inline-Verhalten (Inline) umzuwandeln. Sie können diese Methode direkt auf den Anruf kopieren, anstatt Routinemethodenaufrufe zu tätigen (Sparen von Haltepunkten, drücken Sie den Stapel), wodurch die Effizienz des Programms erhöht wird. Wenn jedoch zu viele vorhanden sind, wird das Code aufblähen und die Effizienz beeinflusst, sodass diese Methode mit Vorsicht verwendet werden sollte. .
4 Definitionsklasse
Jede endgültige Klasse kann von niemandem vererbt werden, was bedeutet, dass diese Klasse eine Blattklasse in einem Erbbaum ist, und diese Klasse wird als perfekt angesehen und erfordert keine Änderung (kurzer als sie wird nicht empfohlen)