Der endgültige Methode wird in Java als verwendet Nichtzugriffsmodifikator gilt nur für a Variable , A Methode , oder ein Klasse. Es ist gewohnt Einen Benutzer einschränken in Java .
Die Folgenden sind verschiedene Kontexte wo das Finale verwendet wird:
- Variable
- Methode
- Klasse
Merkmale des Schlüsselworts final in Java:
In Java wird das Schlüsselwort final verwendet, um anzugeben, dass eine Variable, Methode oder Klasse nicht geändert oder erweitert werden kann. Hier sind einige seiner Eigenschaften:
- Endgültige Variablen: Wenn eine Variable als final deklariert ist, kann ihr Wert nach der Initialisierung nicht mehr geändert werden. Dies ist nützlich, um Konstanten oder andere Werte zu deklarieren, die nicht geändert werden sollen.
- Endgültige Methoden : Wenn eine Methode als final deklariert ist, kann sie nicht von einer Unterklasse überschrieben werden. Dies ist nützlich für Methoden, die Teil der öffentlichen API einer Klasse sind und nicht von Unterklassen geändert werden sollten.
- Abschlussklassen: Wenn eine Klasse als final deklariert ist, kann sie nicht durch eine Unterklasse erweitert werden. Dies ist nützlich für Klassen, die unverändert verwendet werden sollen und nicht geändert oder erweitert werden sollen.
- Initialisierung: Endgültige Variablen müssen entweder zum Zeitpunkt der Deklaration oder im Konstruktor der Klasse initialisiert werden. Dadurch wird sichergestellt, dass der Wert der Variablen festgelegt ist und nicht geändert werden kann.
- Leistung: Die Verwendung eines Finals kann manchmal die Leistung verbessern, da der Compiler den Code effektiver optimieren kann, wenn er weiß, dass eine Variable oder Methode nicht geändert werden kann.
- Sicherheit: Das Finale kann zur Verbesserung der Sicherheit beitragen, indem verhindert wird, dass bösartiger Code sensible Daten oder Verhaltensweisen verändert.
Insgesamt ist das Schlüsselwort final ein nützliches Werkzeug, um die Codequalität zu verbessern und sicherzustellen, dass bestimmte Aspekte eines Programms nicht geändert oder erweitert werden können. Durch die Deklaration von Variablen, Methoden und Klassen als endgültig können Entwickler sichereren, robusteren und wartbareren Code schreiben.
Java-Endvariable
Wenn eine Variable mit deklariert wird letztes Schlüsselwort , es ist Der Wert kann nicht geändert werden , im Wesentlichen, a Konstante . Das bedeutet auch, dass Sie muss eine letzte Variable initialisieren .
Wenn die letzte Variable a ist Referenz , das bedeutet, dass die Variable nicht sein kann erneut an die Referenz gebunden ein anderes Objekt, aber der interne Zustand des Objekts, auf das diese Referenzvariable zeigt, kann geändert werden, d. h. Sie können Elemente hinzufügen oder daraus entfernen letztes Array oder Endabholung.
Es hat sich bewährt, endgültige Variablen ausschließlich in Großbuchstaben darzustellen und Wörter durch Unterstriche zu trennen.
Beispiel:
Java public class ConstantExample { public static void main(String[] args) { // Define a constant variable PI final double PI = 3.14159; // Print the value of PI System.out.println('Value of PI: ' + PI); } }> Ausgabe
Value of PI: 3.14159>
Ausgabe:
Value of PI: 3.14159>
Verschiedene Methoden zur Verwendung der Endvariablen
Sehen wir uns verschiedene Methoden an, mit denen wir die endgültige Variable in Java verwenden können.
1. letzte Variable
Beispiel:
// Final variable final int THRESHOLD = 5;>
2. Leere letzte Variable
Beispiel:
// Blank final variable final int THRESHOLD;>
3. Statische Endvariable
Beispiel:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Statische leere Endvariable
Beispiel:
// Blank final static variable static final double PI;>
Initialisieren einer endgültigen Variablen
Wir müssen eine letzte Variable initialisieren, sonst gibt der Compiler einen Fehler bei der Kompilierung aus. Eine letzte Variable kann nur einmal initialisiert werden, entweder über eine Initialisierer oder eine Zuordnungserklärung. Es gibt drei Möglichkeiten, eine endgültige Variable zu initialisieren:
versteckte Apps
- Sie können eine letzte Variable initialisieren, wenn sie deklariert wird. Dieser Ansatz ist der gebräuchlichste. Eine letzte Variable heißt a leere letzte Variable wenn ja nicht initialisiert während der Deklaration. Im Folgenden finden Sie zwei Möglichkeiten zum Initialisieren einer leeren Endvariablen.
- Eine leere Endvariable kann innerhalb einer initialisiert werden Instanzinitialisiererblock oder der Konstruktor. Wenn Sie mehr als einen Konstruktor in Ihrer Klasse haben, muss dieser in allen initialisiert werden, andernfalls wird ein Fehler bei der Kompilierung ausgegeben.
- Eine leere letzte statische Variable kann innerhalb von a initialisiert werden statischer Block .
Sehen wir uns diese beiden unterschiedlichen Möglichkeiten zur Initialisierung einer endgültigen Variablen an
Beispiel:
Java // Java Program to demonstrate Different // Ways of Initializing a final Variable // Main class class GFG { // a final variable // direct initialize final int THRESHOLD = 5; // a blank final variable final int CAPACITY; // another blank final variable final int MINIMUM; // a final static variable PI // direct initialize static final double PI = 3.141592653589793; // a blank final static variable static final double EULERCONSTANT; // instance initializer block for // initializing CAPACITY { CAPACITY = 25; } // static initializer block for // initializing EULERCONSTANT static{ EULERCONSTANT = 2.3; } // constructor for initializing MINIMUM // Note that if there are more than one // constructor, you must initialize MINIMUM // in them also public GFG() { MINIMUM = -1; } }>
Im obigen Code gab es keine Hauptmethode, da sie lediglich zur Veranschaulichung diente, um ein besseres Verständnis für das Ziehen von Schlussfolgerungen zu erhalten:
Beobachtung 1: Wann sollte eine endgültige Variable verwendet werden?
Der einzige Unterschied zwischen einer normalen Variablen und einer endgültigen Variablen besteht darin, dass wir den Wert einer normalen Variablen neu zuweisen können, den Wert einer endgültigen Variablen jedoch nach der Zuweisung nicht ändern können. Daher dürfen Endvariablen nur für die Werte verwendet werden, die während der gesamten Ausführung des Programms konstant bleiben sollen.
Beobachtung 2: Referenz-Endvariable.
Wenn eine Endvariable ein Verweis auf ein Objekt ist, wird diese Endvariable als bezeichnet Referenz-Endvariable . Zum Beispiel ein Finale StringBuffer Die Variable sieht wie folgt definiert aus:
final StringBuffer sb;>
Wie wir alle wissen, kann eine endgültige Variable nicht neu zugewiesen werden. Aber im Fall einer Referenz-Endvariablen kann der interne Zustand des Objekts, auf das diese Referenzvariable zeigt, geändert werden. Beachten Sie, dass es sich hierbei nicht um eine Neuzuweisung handelt.
Diese Eigenschaft der Finale wird genannt Nichttransitivität . Um zu verstehen, was mit dem internen Zustand des Objekts gemeint ist, wie im folgenden Beispiel gezeigt, wie folgt:
Beispiel 1:
Java // Java Program to demonstrate // Reference of Final Variable // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuilder class // Final reference variable final StringBuilder sb = new StringBuilder('Geeks'); // Printing the element in StringBuilder object System.out.println(sb); // changing internal state of object reference by // final reference variable sb sb.append('ForGeeks'); // Again printing the element in StringBuilder // object after appending above element in it System.out.println(sb); } }> Ausgabe
Geeks GeeksForGeeks>
Der Nichttransitivität Die Eigenschaft gilt auch für Arrays, weil Arrays sind Objekte in Java. Arrays mit dem letztes Schlüsselwort werden auch genannt letzte Arrays .
Notiz: Wie oben erläutert, kann eine endgültige Variable nicht neu zugewiesen werden, da dies zu einem Fehler bei der Kompilierung führt.
Beispiel 2:
Java // Java Program to Demonstrate Re-assigning // Final Variable will throw Compile-time Error // Main class class GFG { // Declaring and customly initializing // static final variable static final int CAPACITY = 4; // Main driver method public static void main(String args[]) { // Re-assigning final variable // will throw compile-time error CAPACITY = 5; } }> Ausgabe:
Array von Objekten in Java

Erinnern: Wenn eine Endvariable innerhalb einer Methode/einem Konstruktor/Block erstellt wird, wird sie als lokale Endvariable bezeichnet und muss einmal am Ort ihrer Erstellung initialisiert werden. Siehe untenstehendes Programm für die lokale Endvariable.
Beispiel:
Java // Java program to demonstrate // local final variable // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring local final variable final int i; // Now initializing it with integer value i = 20; // Printing the value on console System.out.println(i); } }> Ausgabe
20>
Merken Sie sich die folgenden Schlüsselpunkte, bevor Sie fortfahren:
- Beachten Sie den Unterschied zwischen C++ const Variablen und Java Finale Variablen. const-Variablen in C++ müssen sein Bei der Deklaration wird ein Wert zugewiesen . Für finale Variablen in Java ist dies der Fall nicht nötig wie wir in den obigen Beispielen sehen. Einer endgültigen Variablen kann später ein Wert zugewiesen werden, jedoch nur einmal.
- Finale mit foreach-Schleife : final mit for-each-Anweisung ist eine rechtliche Aussage.
Beispiel:
Java // Java Program to demonstrate Final // with for-each Statement // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing // custom integer array int arr[] = { 1, 2, 3 }; // final with for-each statement // legal statement for (final int i : arr) System.out.print(i + ' '); } }> Ausgabe
1 2 3>
Ausgabeerklärung: Seit der ich Wenn die Variable bei jeder Iteration der Schleife den Gültigkeitsbereich verlässt, wird sie bei jeder Iteration neu deklariert, sodass dasselbe Token (i) zur Darstellung mehrerer Variablen verwendet werden kann.
Beispiel:
Java public class Example { public static void main(String[] args) { final int VALUE = 10; // declaring a final variable System.out.println('The value is: ' + VALUE); // VALUE = 20; // uncommenting this line will cause a compiler error // System.out.println('The new value is: ' + VALUE); final String MESSAGE = 'Hello, world!'; // declaring a final variable System.out.println(MESSAGE); MyClass myObj = new MyClass(); myObj.printMessage(); myObj.printFinalMessage(); // MyOtherClass extends MyClass {} // uncommenting this line will cause a compiler error } } class MyClass { final String message = 'Hello!'; // declaring a final instance variable void printMessage() { System.out.println(message); } void printFinalMessage() { final String finalMessage = 'Hello, final!'; System.out.println(finalMessage); } } final class MyOtherClass { // declaring a final class // ... }> Ausgabe
The value is: 10 Hello, world! Hello! Hello, final!>
Java-Abschlussklassen
Wenn eine Klasse mit deklariert wird Finale Schlüsselwort in Java, es heißt a Abschlussklasse . Eine Abschlussklasse kann es nicht geben erweitert (vererbt) .
Es gibt zwei Verwendungsmöglichkeiten einer Abschlussklasse:
Verwendungszweck 1: Eines ist auf jeden Fall zu verhindern Nachlass , da Abschlussklassen nicht verlängert werden können. Zum Beispiel alle Wrapper-Klassen wie Ganze Zahl , Schweben usw. sind Abschlussklassen. Wir können sie nicht verlängern.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>Verwendung 2: Die andere Verwendung von final mit Klassen ist to Erstellen Sie eine unveränderliche Klasse wie die vordefinierten Zeichenfolge Klasse. Man kann eine Klasse nicht unveränderlich machen, ohne sie endgültig zu machen.
Java Final-Methode
Wenn eine Methode mit deklariert wird Finale Schlüsselwort, es heißt a endgültige Methode in Java. Eine endgültige Methode kann es nicht sein überschrieben .
Der Objekt Die Klasse erledigt dies – einige ihrer Methoden sind endgültig. Wir müssen Methoden mit dem Schlüsselwort final deklarieren, für die wir in allen abgeleiteten Klassen dieselbe Implementierung befolgen müssen.
Illustration: Letztes Schlüsselwort mit einer Methode
class A { final void m1() { System.out.println('This is a final method.'); } } class B extends A { void m1() { // Compile-error! We can not override System.out.println('Illegal!'); } }>Vorteile des finalen Schlüsselworts in Java:
Das Schlüsselwort final bietet in Java mehrere Vorteile, darunter:
- Gewährleistung der Unveränderlichkeit: Wenn eine Variable oder Referenz als endgültig markiert ist, kann ihr Wert nach der Zuweisung nicht mehr geändert werden. Dadurch wird sichergestellt, dass die Daten unveränderlich sind und nicht versehentlich oder böswillig geändert werden können.
- Verbessernde Leistung : Die Verwendung von final kann manchmal zur Leistungsverbesserung beitragen, da die Java Virtual Machine (JVM) Code effektiver optimieren kann, wenn sie weiß, dass bestimmte Werte oder Referenzen nicht geändert werden können.
- Code verständlicher machen: Durch die Deklaration von Variablen, Methoden oder Klassen als endgültig können Entwickler ihren Code leichter verständlich und sinnvoll machen. Wenn ein Wert oder eine Referenz als endgültig markiert wird, ist klar, dass er sich nicht ändert, was die Codeanalyse und das Debuggen vereinfachen kann.
- Förderung der Wiederverwendung von Code: Indem Entwickler Methoden als final deklarieren, können sie verhindern, dass Unterklassen sie überschreiben. Dies kann dazu beitragen, die Wiederverwendung von Code zu fördern und Duplikate zu reduzieren, da Unterklassen die Implementierung der Methode der übergeordneten Klasse verwenden müssen.
- Verbesserung der Sicherheit: Die Verwendung von final kann zur Verbesserung der Sicherheit beitragen, indem verhindert wird, dass bösartiger Code vertrauliche Daten oder Verhaltensweisen verändert.
Insgesamt ist das Schlüsselwort final ein nützliches Werkzeug zur Verbesserung der Codequalität und zur Gewährleistung, dass bestimmte Aspekte eines Programms nicht geändert werden können. Durch die Deklaration von Variablen, Methoden und Klassen als endgültig können Entwickler sichereren, robusteren und wartbareren Code schreiben.
Weitere Beispiele und Verhalten von finalen Methoden und finalen Klassen , bitte sehen Verwendung von final mit Vererbung. Bitte sehen Sie sich ... an Zusammenfassung in Java Artikel für Unterschiede zwischen den Finale und das abstrakt .
Verwandte Interviewfrage (wichtig): Unterschied zwischen „final“, „finally“ und „finalize“ in Java
Abschluss
Das letzte Schlüsselwort in Java ist eine Methode zum Erstellen benutzerbeschränkter Variablen, Methoden oder Klassen. In diesem Tutorial behandeln wir das letzte Schlüsselwort von Java im Detail und verstehen alle seine Kontexte.
Die Zusammenhänge werden anhand von Beispielen mit Java-Programmen erläutert und vermitteln so ein umfassendes Verständnis der Thematik.
Java Final Keyword – FAQs
Was ist eine finale Methode in Java?
Eine letzte Methode in Java ist eine Methode, die mit deklariert wird letztes Schlüsselwort , was bedeutet, dass seine Implementierung nicht von Unterklassen überschrieben werden kann.
Wird die endgültige Methode vererbt?
Nein, in Java kann eine finale Methode nicht von einer Unterklasse geerbt werden. Dies bedeutet, dass eine Unterklasse kann eine finale Methode nicht überschreiben .
Was ist das letzte Schlüsselwort und das statische Schlüsselwort in Java?
Endgültiges Schlüsselwort: Es wird verwendet, um Variablen, Methoden oder Klassen als nicht änderbar zu deklarieren.
Statisches Schlüsselwort: Es wird verwendet, um Klassenmitglieder (Variablen und Methoden) zu deklarieren, die zur Klasse selbst gehören, nicht zu einzelnen Objekten.
Können wir das Schlüsselwort final mit einer Zeichenfolge in Java schreiben?
Ja, Sie können eine Variable mit dem Schlüsselwort final deklarieren und ihr ein String-Literal zuweisen.