Alles, was Sie über Final, Final und Finalize in Java wissen müssen



Dieser Artikel zu Final, finally und Finalize in Java enthält eine vollständige Liste der Unterschiede zwischen den Schlüsselwörtern Final, finally und Finalize sowie praktische Implementierungen.

Wenn Sie bereits Erfahrung mit Dann haben Sie vielleicht bemerkt, dass die Interviewer dazu neigen, knifflige Fragen zu stellen, die normalerweise aus den Grundkonzepten stammen. Eine solche Frage, die meistens gestellt wird, ist die Unterscheidung zwischen final, final und finalize in . Durch das Medium dieses Artikels werde ich eine klare Grenze zwischen final, final und finalize in Java ziehen, um Ihnen dabei zu helfen, bessere Einblicke zu gewinnen.

In diesem Artikel werde ich folgende Themen behandeln:





Beginnen wir also mit dem allerersten Keyword unter final, finally und finalize in Java.

Endgültiges Schlüsselwort

In Java ist final ein Schlüsselwort, das auch als Zugriffsmodifikator verwendet werden kann. Mit anderen Worten, das letzte Schlüsselwort wird verwendet, um den Zugriff eines Benutzers einzuschränken. Es kann in verschiedenen Kontexten verwendet werden, wie zum Beispiel:



  1. Variable Final
  2. Endgültige Methode
  3. Abschlussklasse

Bei jedem dieser Schlüsselwörter hat das endgültige Schlüsselwort einen anderen Effekt. Lassen Sie uns nun sehen, wie sich dies nacheinander auf jeden von ihnen auswirkt.

1. Variables Ende

Wann immer das letzte Schlüsselwort in Wird mit einer Variablen, einem Feld oder einem Parameter verwendet, bedeutet dies, dass der Wert der Referenz während der Ausführung des Programms während der Ausführung des Programms nicht mehr geändert werden kann. Falls a Wenn kein Wert als endgültig deklariert wurde, wird er als leere / nicht initialisierte endgültige Variable bezeichnet und kann nur über einen Konstruktor initialisiert werden.

Sehen wir uns nun ein Beispiel an.



öffentliche Klasse A {int var1 = 123 // Endvariablen deklarieren final int var2 = 345 final int var3 // Versuch, eine leere Endvariable zu initialisieren var = 555 // Fehler A () {var1 = 111 // Kein Fehler var2 = 333 // Kompilierungsfehler // Initialisieren einer leeren endgültigen Variablen var3 = 444 // Kein Fehler} // Übergeben der endgültigen Parameter void avg (int param1, final int param2) {param1 = 2345 // Kein Fehler param2 = 1223 // Kompilierungsfehler} // Deklarieren der letzten Felder void show () {final int fieldVal = 300000 fieldVal = 400000 // Fehler}}

Hier ging es darum, wie sich das endgültige Schlüsselwort auf eine Variable auswirkt. Lassen Sie uns nun sehen, wie eine Methode davon betroffen ist.

2. Endgültige Methode

Wenn in Java eine Methode als endgültig deklariert wird, kann dies nicht der Fall sein von jeder untergeordneten Klasse während der Ausführung des Programms.

Sehen wir uns ein Beispiel an.

// FINAL METHOD Klasse A {final void method_abc () {System.out.println ('Dies ist eine Final-Methode und kann nicht überschrieben werden')} void method_xyz () {System.out.println ('Dies ist eine normale Methode und kann überschrieben werden ')}} Klasse B erweitert A {void method_abc {// Kompilierungszeitfehler} void method_xyz () {System.out.println (' Dies ist eine überschriebene Methode in Klasse B ')}}

Bis jetzt haben Sie bereits die Ergebnisse der Deklaration einer Variablen und einer Methode final gesehen. Lassen Sie uns nun weiter gehen und sehen, was passiert, wenn eine Klasse in Java als final deklariert wird.

3. Abschlussklasse

In Java kann es nicht sein, dass eine Klasse als endgültig deklariert wird . Dies liegt daran, dass nach der Deklaration einer Klasse als endgültig alle in der Klasse enthaltenen Datenelemente und Methoden implizit als endgültig deklariert werden. Sobald eine Klasse als endgültig deklariert ist, kann sie nicht mehr als abstrakt deklariert werden. Mit anderen Worten, eine Klasse kann entweder endgültig oder abstrakt sein.

Sehen wir uns ein Beispiel an.

// FINAL CLASS letzte Klasse A {// Klassenkörper} Klasse B erweitert A {// Kompilierungsfehler // Klassenkörper}

Ich hoffe, Sie haben die Funktionsweise des endgültigen Schlüsselworts inzwischen klar verstanden. Lassen Sie uns nun mit diesem Artikel über final, finally fortfahren und in Java finalisieren, um herauszufinden, welche Rolle das Schlüsselwort finally spielt.

Schließlich blockieren

In Java ist schließlich ein optionaler Block, der für die verwendet wird . Dem geht im Allgemeinen ein Try-Catch-Block voraus. Der finally-Block wird verwendet, um einen wichtigen Code auszuführen, z. B. die Bereinigung von Ressourcen oder die Freigabe der Speichernutzung usw. Ein finally-Block wird ausgeführt, unabhängig davon, ob eine Ausnahme behandelt wird oder nicht. Das Umschließen der Bereinigungscodes in einen finally-Block wird daher als bewährte Methode angesehen. Sie können es auch mit einem try-Block verwenden, ohne dass ein catch-Block erforderlich ist.

Sehen wir uns nun ein Beispiel dafür an.

Klasse A {public static void main (String args []) {try {System.out.println ('Try Block') wirft eine neue Exception ()} catch (Exception e) {System.out.println ('Catch Block') } finally {System.out.println ('finally block')}}}

Bis jetzt habe ich bereits die endgültigen und endgültigen Schlüsselwörter in Java besprochen. Lassen Sie uns nun etwas Licht auf das letzte der drei Schlüsselwörter werfen, dh das Schlüsselwort in Java finalisieren.

Methode abschließen

Finalize ist eine geschützte nicht statische Methode, die in der Object-Klasse definiert ist und somit für alle Objekte in Java verfügbar ist.Diese Methode istWird vom Garbage Collector aufgerufen, bevor ein Objekt vollständig zerstört wird.Wie manchmalein Möglicherweise müssen wichtige Aufgaben wie das Schließen einer offenen Verbindung, das Freigeben einer Ressource usw. ausgeführt werden, bevor sie zerstört wird. Wenn diese Aufgaben nicht ausgeführt werden, kann dies die Effizienz des Programms beeinträchtigen. Und so kam es dass derGarbage Collector ruft es für die Objekte auf, auf die nicht mehr verwiesen wird und die für die Garbage Collection markiert wurden.

Diese Methode wird als geschützt deklariert, um ihre Verwendung von außerhalb der Klasse einzuschränken. Sie können es jedoch innerhalb der Klasse überschreiben, um seine Eigenschaften zum Zeitpunkt der Speicherbereinigung zu definieren.

Was ist ein Bufferedreader Java

Sehen wir uns ein Beispiel dafür an.

public class A {public void finalize () löst Throwable aus {System.out.println ('Objekt wird vom Garbage Collector zerstört')} public static void main (String [] args) {Edureka test = new Edureka () test = null System.gc ()}}

Damit sind wir am Ende dieses Artikels über final, final und finalize in Java angelangt. Um dies abzuschließen, habe ich einen Vergleich zwischen allen drei Schlüsselwörtern hinzugefügt, der Ihnen hilft, die wichtigsten Unterschiede auf einen Blick zu erkennen.

Vergleichstabelle - Final vs Final vs Finalize Keywords in Java

Faktor Finale Schließlich Finalisieren
Definition Final ist ein Schlüsselwort und wird in Java als Zugriffsmodifikator verwendetSchließlich wird in Java ein Block für die Ausnahmebehandlung verwendetFinalize ist eine Methode in Java, die für die Garbage Collection verwendet wird
Anwendung Final in Java wird mit Variablen, Methoden und Klassen verwendet, um Zugriffsberechtigungen festzulegenSchließlich wird der Block zusammen mit einem Try-and-Catch-Block verwendetDie Finalize-Methode in Java wird für Objekte verwendet, die nicht mehr verwendet werden
Funktion Die letzte Variable in Java ist eine Konstante, deren Wert nach der Zuweisung nicht mehr geändert werden kann.

Die endgültige Methode in Java kann nicht von ihren untergeordneten Klassen überschrieben werden.

Die letzte Klasse in Java kann von keiner untergeordneten Klasse geerbt werden.

Schließlich hilft der Block in Java beim Bereinigen der Ressourcen, die im try-Block verwendet wurdenDie Finalize-Methode hilft beim Bereinigen von Aktivitäten für das Objekt, bevor es vom Garbage Collector zerstört wird
Ausführung Es wird ausgeführt, wenn es vom Compiler aufgerufen wirdWird direkt nach der Ausführung des Try-Catch-Blocks ausgeführtEs wird ausgeführt, kurz bevor ein Objekt zerstört wird

Ich hoffe, dass ich durch dieses Finale, Endlich und Finalisieren in Java die Konzepte klären konnte und Ihnen dabei geholfen habe, Ihr Wissen aufzuwerten.

Wenn Sie diesen Artikel unter „Final, finally und Finalize in Java“ gefunden haben ”Relevant, Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren Final, Final und Finalize in Java und wir werden uns bei Ihnen melden.