Finale:
Durch das Finale können Sie steuern, ob Ihre Mitglieder, Methoden oder Klassen überschrieben oder geerbt werden können.
Wenn Sie eine Variable in einer Klasse definieren, fügen Sie das endgültige Schlüsselwort vor diesem hinzu, dass diese Variable nicht geändert werden kann ihre Referenzen können nicht mehr geändert werden. Seine Initialisierung kann an zwei Stellen sein, eine ist seine Definition und die andere ist, dass man im Konstruktor nur eine der beiden auswählen kann.
Das folgende Programm zeigt lediglich die allgemeine Verwendung von Final:
öffentlicher Klassen -Test {endgültig int = 1;
Eine andere Verwendung besteht darin, die Parameter in der Methode als endgültig zu definieren. . Diese Parametervariable wirkt sich nicht auf die aufrufende Anweisung aus, ist jedoch für Objektvariablen sehr praktisch, da Objektvariablen ihre Referenzen beim Übergeben übergeben werden, so Wenn Sie die Objektvariable nicht als Parameter in der Methode ändern müssen, wird die endgültige Verwendung der endgültigen Verwendung deklariert, wodurch Sie die Aufrufmethode unbeabsichtigt ändern und beeinflussen.
Bei Verwendung von Parametervariablen in der Methode in der inneren Klasse muss diese Parametervariable endgültig deklariert werden, bevor sie verwendet werden kann, wie im folgenden Code gezeigt:
public class test {void print (endgültig string str) {class Innertest {Innertest () {System.out.println (Str); {Test Test = New Test ();
Es gibt zwei Gründe, warum die endgültige Methode die Methode als endgültig erklärt. Die Klasse von dieser Klasse. Der zweite ist ein Mechanismus, mit dem der Compiler alle Aufrufe in diese Methode in Inline-Aufrufe umwandeln kann. . Sie sollten also endgültig verwenden, um die Methode mit Vorsicht zu definieren.
Die endgültige Klasse Wenn Sie das endgültige in einer Klasse verwenden, müssen Sie sorgfältig nachdenken, da eine endgültige Klasse von niemandem geerbt werden kann, was bedeutet, dass diese Klasse eine Blattklasse in einem Vererbungsbaum ist, und diese Klasse wurde als perfekt als perfekt angesehen, ohne ohne Änderung oder Erweiterung. Für Mitglieder in der letzten Klasse können Sie es als endgültig oder nicht endgültig definieren. Für Methoden werden sie natürlich endgültig, da die Klasse zum Finale gehört. Sie können der Methode in der endgültigen Klasse auch explizit ein Finale hinzufügen, aber dies macht offensichtlich keinen Sinn.
Endlich:
Das endgültige Schlüsselwort ist die beste Ergänzung zum Java -Ausnahme -Handling -Modell. Die endgültige Struktur ermöglicht es dem Code, immer auszuführen, unabhängig davon, ob die Ausnahme auftritt. Verwenden Sie schließlich, um den internen Zustand eines Objekts aufrechtzuerhalten und nicht nachemmory-Ressourcen aufzuräumen. Ohne endlich wird Ihr Code verwirrend sein. Der folgende Code zeigt beispielsweise, wie Sie Code auf kostenlose Nicht-Memory-Ressourcen schreiben, ohne endlich zu verwenden:
public void writefile (String filepath, String -Dateiname, String args) löscht IOException {FileWriter fw = neuer FileWriter (Filepath + Dateiname); ();
Dieser Code erstellt ein Filewriter -Objekt und ruft die Schreibmethode auf. Bevor Sie die Methode verlassen, müssen Sie das Filewriter -Objekt schließen, um Ressourcen Schwachstellen zu vermeiden. Um diese Aufgabe zu erledigen, nennen wir Close AT // 2, was die letzte Aussage der Methode ist. Aber was passiert, wenn eine Ausnahme im Try -Block auftritt? In diesem Fall kommt es nie vor, dass der schließende Anruf AT // 2 niemals passiert. Daher müssen Sie diese Ausnahme erfassen und einen weiteren Anruf einfügen, um AT bei // 1 zu schließen, bevor Sie diese Ausnahme neu ausgeben. Dies stellt sicher, dass das Dateiwriter -Objekt vor dem Verlassen der Methode geschlossen wird. Das Schreiben von Code wie diesen ist sowohl umständlich als auch fehleranfällig, aber es ist ohne endlich unerlässlich. Mit schließlich kann der vorherige Code in das folgende Formular umgeschrieben werden:
public void writefile (String filepath, String -Dateiname, String args) IOException {Filewriter fw = neuer FileWriter (Filepath + Dateiname); fw .close ();
Der endgültige Block stellt sicher, dass die enge Methode immer ausgeführt wird, unabhängig davon, ob eine Ausnahme innerhalb des Try -Blocks ausgestellt wird. Daher wird sichergestellt, dass die enge Methode immer vor dem Verlassen der Methode aufgerufen wird. Auf diese Weise können Sie sicher sein, dass das Filewriter -Objekt geschlossen ist und dass Sie keine Ressourcen durchgesickert haben.
abschließen:
Nach der Java -Sprachspezifikation stellt die JVM sicher, dass dieses Objekt vor dem Aufrufen der Finalize -Funktion nicht erreichbar ist. Die JVM garantiert jedoch nicht, dass diese Funktion aufgerufen wird. Darüber hinaus stellt die Spezifikation sicher, dass die Finalize -Funktion höchstens einmal ausgeführt wird.
Im Allgemeinen wird Finalize verwendet, um einige Ressourcen freizugeben, die nicht einfach zu kontrollieren sind und sehr wichtig sind, wie einige E/A -Operationen und Datenverbindungen. Die Veröffentlichung dieser Ressourcen ist für die gesamte Anwendung sehr wichtig. In diesem Fall sollten Programmierer diese Ressourcen hauptsächlich über das Programm selbst verwalten (einschließlich der Freigabe) und die Methode zur Freisetzung von Ressourcen mit der Abschlussfunktion als Ergänzung zur Bildung eines doppelten Versicherungsmanagementmechanismus ergänzen, anstatt sich ausschließlich auf die Abschluss zu verlassen, um Ressourcen zu veröffentlichen.
Zusammenfassen
Finale - Modifikator (Schlüsselwort) Wenn eine Klasse endgültig erklärt wird, bedeutet dies, dass sie keine neuen Unterklassen ableiten kann und nicht als übergeordnete Klasse geerbt 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.
Schließlich - ein endgültiger Block wird bereitgestellt, um einen Clearing -Betrieb durchzuführen, wenn die Ausnahme verarbeitet wird. Wenn eine Ausnahme ausgelöst wird, wird die passende Fangklausel ausgeführt, und die Steuerung wird in den schließlich Block (falls vorhanden) eingegeben.
Finalize - Methodenname. Die Java -Technologie ermöglicht die Verwendung der methode finalize () die erforderliche Reinigungsarbeit, bevor der Garbage Collector Objekte aus dem Gedächtnis entfernen. 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.