Das Schlüsselwort final in Java ist ein Nicht-Zugriffsmodifikator, der auf Variablen, Methoden und Klassen angewendet werden kann. Sie wird verwendet, um den Nutzer daran zu hindern, die Entität, auf die sie angewendet wird, weiter zu verändern. Dieses Schlüsselwort spielt eine entscheidende Rolle bei der Sicherstellung der Unveränderbarkeit und der Verhinderung von Vererbung oder Methodenüberschreibung.
Verwendung
1. final Variablen
Eine final Variable ist eine Konstante; einmal initialisiert, kann ihr Wert nicht mehr geändert werden.
Eine final Variable muss initialisiert werden, wenn sie deklariert wird oder innerhalb eines Konstruktors, wenn es sich um eine Instanzvariable handelt.
publicclassFinalInitialization{
final int MAX_VALUE;publicFinalInitialization(){MAX_VALUE=100;}}Bereitgestellt von
2. final Methoden
Eine final Methode kann nicht von Unterklassen überschrieben werden, damit die Implementierung der Methode unverändert bleibt.
classParent{public final voiddisplay(){
System.out.println("This is a final method.");}}Bereitgestellt von
3. final Klassen
Eine Klasse final kann nicht unterklassifiziert werden, was die Vererbung verhindert.
publicclassFinalVariableExample{publicstaticvoidmain(String[] args){
final int MAX_VALUE=100;
System.out.println("MAX_VALUE: "+MAX_VALUE);// MAX_VALUE = 200; // This will cause a compilation error}}Bereitgestellt von
In diesem Beispiel ist MAX_VALUE eine final Variable. Der Versuch, sie neu zuzuweisen, führt zu einem Kompilierungsfehler.
Beispiel 2: final Methode
classParent{public final voiddisplay(){
System.out.println("This is a final method.");}}classChildextendsParent{// public void display() { // This will cause a compilation error// System.out.println("Attempting to override.");// }}publicclassFinalMethodExample{publicstaticvoidmain(String[] args){
Child obj =newChild();
obj.display();}}Bereitgestellt von
Hier wird die Methode display in der Klasse Parent als final markiert, um zu verhindern, dass sie in der Klasse Child überschrieben wird.
Beispiel 3: final Klasse
public final classFinalClass{publicvoidshow(){
System.out.println("This is a final class.");}}// class SubClass extends FinalClass { // This will cause a compilation error// }publicclassFinalClassExample{publicstaticvoidmain(String[] args){
FinalClass obj =newFinalClass();
obj.show();}}Bereitgestellt von
In diesem Beispiel wird FinalClass als final deklariert, was bedeutet, dass sie von keiner anderen Klasse erweitert werden kann.
Tipps und bewährte Praktiken
Unveränderlichkeit: Verwende final Variablen, um Konstanten zu erstellen und sicherzustellen, dass ihre Werte während des gesamten Programms unverändert bleiben.
Sicherheit: Verwende final Methoden, um zu verhindern, dass Unterklassen kritische Methoden ändern, was zur Wahrung der Sicherheit und Konsistenz beitragen kann.
Design: Verwende final Klassen, um Vererbung zu verhindern, wenn du unveränderliche Klassen entwirfst oder wenn du sicherstellen willst, dass die Implementierung der Klasse nicht verändert werden kann.
Statische Endvariablen: Anders als Instanz-Endvariablen können statische Endvariablen nicht über Konstruktoren zugewiesen werden. Sie werden normalerweise in ihrer Deklaration initialisiert.
publicclassFinalStaticExample{publicstatic final double PI=3.14159;}Bereitgestellt von
Leistung: In einigen Fällen kann die Verwendung von final dem Java-Compiler und dem JIT-Compiler helfen, den Code zu optimieren, da er mehr Informationen über die Unveränderlichkeit des Wertes liefert.
Das Schlüsselwort
finalin Java ist ein Nicht-Zugriffsmodifikator, der auf Variablen, Methoden und Klassen angewendet werden kann. Sie wird verwendet, um den Nutzer daran zu hindern, die Entität, auf die sie angewendet wird, weiter zu verändern. Dieses Schlüsselwort spielt eine entscheidende Rolle bei der Sicherstellung der Unveränderbarkeit und der Verhinderung von Vererbung oder Methodenüberschreibung.Verwendung
1.
finalVariablenEine
finalVariable ist eine Konstante; einmal initialisiert, kann ihr Wert nicht mehr geändert werden.Initialisierung von
finalVariablenEine
finalVariable muss initialisiert werden, wenn sie deklariert wird oder innerhalb eines Konstruktors, wenn es sich um eine Instanzvariable handelt.2.
finalMethodenEine
finalMethode kann nicht von Unterklassen überschrieben werden, damit die Implementierung der Methode unverändert bleibt.3.
finalKlassenEine Klasse
finalkann nicht unterklassifiziert werden, was die Vererbung verhindert.Beispiele
Beispiel 1:
finalVariabelIn diesem Beispiel ist
MAX_VALUEeinefinalVariable. Der Versuch, sie neu zuzuweisen, führt zu einem Kompilierungsfehler.Beispiel 2:
finalMethodeHier wird die Methode
displayin der KlasseParentalsfinalmarkiert, um zu verhindern, dass sie in der KlasseChildüberschrieben wird.Beispiel 3:
finalKlasseIn diesem Beispiel wird
FinalClassalsfinaldeklariert, was bedeutet, dass sie von keiner anderen Klasse erweitert werden kann.Tipps und bewährte Praktiken
finalVariablen, um Konstanten zu erstellen und sicherzustellen, dass ihre Werte während des gesamten Programms unverändert bleiben.finalMethoden, um zu verhindern, dass Unterklassen kritische Methoden ändern, was zur Wahrung der Sicherheit und Konsistenz beitragen kann.finalKlassen, um Vererbung zu verhindern, wenn du unveränderliche Klassen entwirfst oder wenn du sicherstellen willst, dass die Implementierung der Klasse nicht verändert werden kann.finaldem Java-Compiler und dem JIT-Compiler helfen, den Code zu optimieren, da er mehr Informationen über die Unveränderlichkeit des Wertes liefert.