Unterschied zwischen Final, finally und Finalize in Java

Autor: Laura McKinney
Erstelldatum: 2 April 2021
Aktualisierungsdatum: 5 Kann 2024
Anonim
Difference Between final finally and finalize in Java (Hindi)
Video: Difference Between final finally and finalize in Java (Hindi)

Inhalt


Die Wörter "final, finally, and finalize" liegen in der Konversion von Java. Jeder von ihnen hat eine andere Funktion. Der grundlegende Unterschied zwischen final, finally und finalize besteht darin, dass Finale ist ein Zugriffsmodifikator, schließlich ist ein Block und abschließen ist eine Methode einer Objektklasse. Es gibt einige andere Unterschiede zwischen final und finalize, die in der Vergleichstabelle erläutert werden.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichFinaleEndlichFinalisieren
BasicFinal ist ein "Schlüsselwort" und ein "Zugriffsmodifikator" 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 try and catch-Block verknüpft ist.finalize () ist eine Methode für Objekte.
Arbeiten(1) Die endgültige Variable wird konstant und kann nicht neu zugewiesen werden.
(2) Eine endgültige Methode kann von der untergeordneten Klasse nicht überschrieben werden.
(3) Die Abschlussklasse kann nicht verlängert werden.
Bereinigen Sie bei einem "finally" -Block die im "try" -Block verwendeten Ressourcen.Mit der Finalize-Methode werden die mit dem Objekt verbundenen Aktivitäten vor dessen Zerstörung bereinigt.
AusführungDie letzte Methode wird bei ihrem Aufruf ausgeführt.Der Block "finally" wird unmittelbar nach der Ausführung des Blocks "try-catch" ausgeführt.Die Methode finalize () wird unmittelbar vor der Zerstörung des Objekts ausgeführt.


Definition von Endgültig

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

Endvariable

  • Wenn ein endgültiges Schlüsselwort auf die Variable angewendet wird, kann es nicht weiter geändert werden.
  • Eine endgültige Variable muss beim Deklarieren initialisiert werden.
  • In einer allgemeinen Codierungskonvention werden endgültige Variablen in GROSSBUCHSTABEN deklariert.
  • Die endgültige Variable belegt nicht den Arbeitsspeicher pro Instanz.

final int FILE_OPEN = 2;

Endgültige Methoden

  • Wenn eine Methode in einer Klasse als final deklariert wird, kann sie nicht von ihrer Unterklasse überschrieben werden.
  • Kleine Methoden, die als final deklariert wurden, können vom Compiler als "inline" deklariert werden, wodurch der Aufwand für Funktionsaufrufe verringert und die Leistung verbessert wird.
  • Überschriebene Methoden werden dynamisch aufgelöst, aber wenn eine Methode als final deklariert wird, kann sie nicht überschrieben werden. Daher kann der Funktionsaufruf zur Kompilierzeit aufgelöst werden.

Klasse A {final void meth () {System.out.ln ("Dies ist eine endgültige Methode."); }} Klasse B erweitert A {void meth () {// Klasse B kann die Methode der Klasse A nicht erben. System.out.ln ("Überschreibt nicht"); }}

Abschlussklasse

  • Wenn eine Klasse als final deklariert wird, kann sie von keiner Unterklasse geerbt werden.
  • Wenn Sie eine Klasse als final deklarieren, werden automatisch alle Methoden als final deklariert.
  • Sie können eine Klasse nicht sowohl als "abstrakt" als auch als "endgültig" deklarieren.

Endklasse A {// ...} Klasse B erweitert A {// Klasse B kann Klasse A nicht erben // ...}

  • 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 dem try / catch-Block folgt.
  • Der "finally" -Block wird ausgeführt, unabhängig davon, ob die Ausnahme ausgelöst wurde oder nicht.
  • Wenn eine Ausnahme ausgelöst wird und selbst 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 abgefangene Ausnahme oder eine explizite return-Anweisung zum Aufrufer zurückkehrt, wird der finally-Block ausgeführt, kurz bevor die Methode zum Aufrufer zurückkehrt.
  • Der "finally" -Block wird verwendet, um die Ressourcen zu bereinigen oder den im "try" -Block verwendeten Speicher freizugeben.
  • Der "finally" -Block ist optional, es empfiehlt sich jedoch, den finally-Block nach dem try / catch-Block zu schreiben.

class finallyexample {// Diese Methode löst eine Ausnahme aus der Methode aus. statische Leere procA () {try {System.out.ln ("inside procA"); werfen neue RuntimeException ("Demo"); } finally {System.out.ln ("procAs finally"); }} // Kehre aus einem try-Block zurück. statische Leere procB () {try {System.out.ln ("inside procB"); Rückkehr; } finally {System.out.ln ("procBs finally"); }} // Führe einen Try-Block normal aus. statische Leere procC () {try {System.out.ln ("inside procC"); } finally {System.out.ln ("procCs finally"); }} public static void main (String args) {try {procA (); } catch (Ausnahme e) {System.out.ln ("Ausnahme abgefangen"); } procB (); procC (); }} // Ausgabe innerhalb von procA procA’s finally Ausnahme innerhalb von procB procB’s finally innerhalb von procC procC’s finally

Definition von Finalisieren

  • Finalize ist eine Methode in einer Objektklasse.
  • Ein Objekt enthält möglicherweise einige Nicht-Java-Ressourcen, 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 durch, bevor es zerstört wird.

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


Geschützte Leere finalize () {// Finalisierungscode hier}

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

Diese Methode wird immer vor der Garbage Collection aufgerufen.

  1. Das Schlüsselwort final ist ein Zugriffsmodifikator, finally ist ein Block und finalize ist eine Methode.
  2. Das Schlüsselwort final bezieht sich auf die Klassen, Variablen und Methoden der Klassen. Finally ist ein Block, der dem try catch-Block zugeordnet ist, der zum Behandeln von Ausnahmen verwendet wird. Finalize ist eine Methode, die nur auf Objekte angewendet 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 durch try and catch block verwendeten Ressourcen zu bereinigen. Die Methode finalize wird verwendet, um die von einem Objekt verwendeten Ressourcen zu bereinigen, bevor das Objekt zerstört wird.

Fazit:

Final, finally und finalize haben einen anderen Effekt, wenn sie auf eine Methode angewendet werden.