Der Java-Endmodifikator kann an alle Klassen, Methoden und Variablen angehängt werden. Jeder hat eine andere Bedeutung.
Wenn Sie einer Klasse den letzten Modifikator hinzufügen, kann diese Klasse nicht vererbt werden. Bei der Kompilierung tritt ein Fehler auf.
//letzte Modifikatorklasse
final class FinalDemo {
String name = "Klasse mit Finale";
public final void getInfo() {
System.out.println(this.name);
}
}
//Kleine Klasse
class FinalDemoChild extends FinalDemo {
}
class MyApp {
public static void main(String[] args) {
FinalDemoChild demo = new FinalDemoChild();
}
}
Ausführungsergebnis
$ java Myapp
Error:(8, 21) java: final final_Kann nicht von der Demo geerbt werden
Wenn Sie einer Methode einer Klasse final hinzufügen, können Sie sie in der untergeordneten Methode class nicht überschreiben.
//Klasse mit Finale
class FinalDemo {
String name = "Klasse mit Finale";
public final void getInfo() {
System.out.println(this.name);
}
}
//Kleine Klasse
class FinalDemoChild extends FinalDemo {
@Override
public void getInfo() {
System.out.println(this.name + "Kleine Klasse");
}
}
class MyApp {
public static void main(String[] args) {
FinalDemoChild demo = new FinalDemoChild();
}
}
Ausführungsergebnis
$ java MyApp
Error:(11, 17) java:FinalDemoChild getInfo()Ist die endgültige Demo getInfo()Kann nicht überschrieben werden
Die überschriebene Methode ist endgültig
Wenn Sie einer Variablen (einem Feld) final hinzufügen, können Sie sie nicht neu zuweisen. Das heißt, es ist eine Konstante. Da es nicht erforderlich ist, es mit der Instanz zu ändern, wird es häufig mit einer Klassenvariablen mit static deklariert. Wie in anderen Sprachen werden auch alle Konstanten in Großbuchstaben geschrieben.
//Klasse mit Finale
class FinalDemo {
public static final String NAME = "Variablen mit final";
}
class MyApp {
public static void main(String[] args) {
//Konstante ändern
FinalDemo.NAME = "Neuzuweisung";
}
}
Ausführungsergebnis
$ java MyApp
Error:(9, 18) java:Sie können der endgültigen Variablen NAME keinen Wert zuweisen
Recommended Posts