Empfohlen, 2020

Tipp Der Redaktion

Unterschied zwischen Final, Final und Finalize in Java

Die Worte "final, final und finalize" liegen im Zusammenhang mit Java. Jeder von ihnen hat eine andere Funktion. Der grundlegende Unterschied zwischen final, final und finalize besteht darin, dass final ein Zugriffsmodifizierer ist, final ein Block und finalize eine Methode einer Objektklasse ist. Es gibt einige andere Unterschiede zwischen final, final und finalize, die in der Vergleichstabelle erörtert werden.

Vergleichstabelle

VergleichsgrundlageFinaleEndlichAbschließen
BasicFinal ist ein "Schlüsselwort" und "Zugriffsmodifizierer" in Java.Schließlich ist ein "Block" in Java.Finalize ist eine "Methode" in Java.
AnwendbarFinal ist ein Schlüsselwort für Klassen, Variablen und Methoden.Schließlich ist ein Block, der immer mit dem Try & Catch-Block verbunden ist.finalize () ist eine auf Objekte anwendbare Methode.
Arbeiten(1) Die letzte Variable wird konstant und kann nicht neu zugewiesen werden.
(2) Eine finale Methode kann nicht von der Kindklasse überschrieben werden.
(3) Die Abschlussklasse kann nicht verlängert werden.
Eine "endgültige" Blockierung bereinigt die in der Try-Blockierung verwendeten Ressourcen.Die Finalize-Methode führt Bereinigungsaktivitäten für das Objekt aus, bevor es zerstört wird.
AusführungDie finale Methode wird bei ihrem Aufruf ausgeführt.Der Befehl "finally" wird unmittelbar nach der Ausführung des Blocks "try-catch" ausgeführt.Die finalize () -Methode wird unmittelbar vor der Zerstörung des Objekts ausgeführt.

Definition von Finale

"Final" ist ein Schlüsselwort in Java. Es ist ein Zugriffsmodifizierer. Das Schlüsselwort "final" gilt für Klassen, Methoden und Variablen. Lassen Sie uns sehen, wie es mit jedem von ihnen funktioniert.

Letzte Variable

  • Wenn ein endgültiges Schlüsselwort auf die Variable angewendet wird, kann es nicht weiter geändert werden.
  • Eine letzte Variable muss bei der Deklaration initialisiert werden.
  • In einer gängigen Codierungskonvention werden letzte Variablen in UPPERCASE deklariert.
  • Die letzte Variable belegt keinen Speicherplatz pro Instanz.
 final int FILE_OPEN = 2; 

Endgültige Methoden

  • Wenn eine Methode in der Klasse als final deklariert ist, kann sie nicht von ihrer Unterklasse überschrieben werden.
  • Kleine Methoden, die als final deklariert werden, können vom Compiler als "inline" deklariert werden, wodurch der Aufwand für Funktionsaufrufe reduziert und die Leistungsverbesserungen erhöht werden.
  • Überschriebene Methodenaufrufe werden dynamisch aufgelöst, aber wenn eine Methode als final deklariert ist, kann sie nicht überschrieben werden. Daher kann der Funktionsaufruf zur Kompilierzeit aufgelöst werden.
 Klasse A {final void meth () {System.out.println ("Dies ist eine letzte Methode."); }} Klasse B erweitert A {void meth () {// Clas B kann die Methode der Klasse A nicht erben. System.out.println ("Überschreibt nicht"); }} 

Letzte Klasse

  • Wenn eine Klasse als final deklariert ist, kann sie nicht von einer Unterklasse vererbt werden.
  • Wenn Sie eine Klasse als final deklarieren, werden automatisch alle ihre Methoden als final deklariert.
  • Sie können eine Klasse nicht sowohl als „abstrakt“ als auch als „final“ deklarieren.
 letzte Klasse A {// ...} Klasse B erweitert A {// Klasse B kann Klasse A nicht erben // ...} 

Definition von Endlich

  • In Java ist "finally" ein Block, der immer dem try / catch-Block zugeordnet ist.
  • Der "finally" -Block wird nach dem try / catch-Block und vor dem Code ausgeführt, der auf den try / catch-Block folgt.
  • Der "finally" -Block wird ausgeführt, ob die Ausnahme ausgelöst wird oder nicht.
  • Wenn eine Ausnahme ausgelöst wird und auch dann kein Catch-Block mit der Ausnahme übereinstimmt, wird der "finally" -Block ausgeführt.
  • Wenn eine Methode aus dem try / catch-Block über eine nicht erfasste Ausnahme oder eine explizite return-Anweisung zum Aufrufer zurückkehrt, wird der "finally" -Block ausgeführt, bevor die Methode zum Aufrufer zurückkehrt.
  • Mit dem "finally" -Block werden die Ressourcen bereinigt oder der im "try" -Block verwendete Speicher freigegeben.
  • Der "finally" -Block ist optional, es ist jedoch eine gute Praxis, nach dem try / catch-Block einen final-Block zu schreiben.
 class finallyExample {// Diese Methode löst eine Ausnahme aus der Methode aus. static void procA () {try {System.out.println ("in procA"); Neue RuntimeException werfen ("Demo"); } finally {System.out.println ("procAs endlich"); }} // Rückkehr aus einem try-Block. static void procB () {try {System.out.println ("in procB"); Rückkehr; } finally {System.out.println ("procBs endlich"); }} // Einen Try-Block normal ausführen. static void procC () {try {System.out.println ("in procC"); } finally {System.out.println ("procCs finally"); }} public static void main (String args []) {try {procA (); } catch (Ausnahme e) {System.out.println ("Ausnahme gefangen"); } procB (); procC (); }} // Ausgabe in procA procAs endlich Ausnahme in ProcBs procBs endlich in procCs procCs endlich gefangen 

Definition von abschließen

  • Finalize ist eine Methode in einer Objektklasse.
  • Ein Objekt kann einige Nicht-Java-Ressourcen enthalten, z. B. Dateihandle. dann muss es befreit werden, bevor es zerstört wird.
  • Diese Methode wird vom Garbage Collector aufgerufen, bevor das Objekt vollständig zerstört wird.
  • Diese Methode führt Bereinigungsaktivitäten für das Objekt aus, bevor es zerstört wird.

Die allgemeine Form der Methode finalize () ist wie folgt.

 Geschützter void finalize () {// Finalisierungscode hier} 

Die finalize-Methode ist als protected deklariert, sodass nicht von außerhalb der Klasse auf sie zugegriffen werden kann.

Diese Methode wird immer vor der Speicherbereinigung aufgerufen.

Hauptunterschiede zwischen Final, Final und Finalize

  1. Das Schlüsselwort final ist ein Zugriffsmodifizierer, final ist ein Block und finalize ist eine Methode.
  2. Das Schlüsselwort final ist auf die Klassen, Variablen und Methoden der Klassen anwendbar. Schließlich ist ein Block mit dem try catch-Block verknüpft, der zum Behandeln von Ausnahmen verwendet wird. Finalize ist eine Methode, die nur für Objekte ausgeführt wird.
  3. Die als final deklarierte Variable wird konstant und kann nicht erneut zugewiesen werden. Eine als final deklarierte Methode kann nicht überschrieben werden. Eine als final deklarierte Klasse kann niemals vererbt werden. Der finally-Block wird verwendet, um die von try and catch block verwendeten Ressourcen zu bereinigen. Die finalize-Methode wird verwendet, um die von einem Objekt verwendeten Ressourcen zu bereinigen, bevor das Objekt zerstört wird.

Fazit:

Final, final und finalize wirken sich auf eine Methode anders aus.

Top