Le modificateur final java peut être attaché à toutes les classes, méthodes et variables, Chacun a une signification différente.
Si vous ajoutez le modificateur final à une classe, cette classe ne peut pas être héritée. Une erreur se produira au stade de la compilation.
//classe de modificateur final
final class FinalDemo {
String name = "Classe avec finale";
public final void getInfo() {
System.out.println(this.name);
}
}
//Petite classe
class FinalDemoChild extends FinalDemo {
}
class MyApp {
public static void main(String[] args) {
FinalDemoChild demo = new FinalDemoChild();
}
}
Résultat d'exécution
$ java Myapp
Error:(8, 21) java: final final_Ne peut pas être hérité de la démo
Si vous ajoutez final à une méthode d'une classe, vous ne pouvez pas la remplacer dans la classe enfant de la méthode.
//Classe avec finale
class FinalDemo {
String name = "Classe avec finale";
public final void getInfo() {
System.out.println(this.name);
}
}
//Petite classe
class FinalDemoChild extends FinalDemo {
@Override
public void getInfo() {
System.out.println(this.name + "Petite classe");
}
}
class MyApp {
public static void main(String[] args) {
FinalDemoChild demo = new FinalDemoChild();
}
}
Résultat d'exécution
$ java MyApp
Error:(11, 17) java:FinalDemoChild getInfo()Est la démo finale getInfo()Ne peut pas être remplacé
La méthode remplacée est définitive
Si vous ajoutez final à une variable (champ), vous ne pouvez pas la réaffecter. Autrement dit, c'est une constante. Puisqu'il n'est pas nécessaire de le changer avec instance, il est souvent déclaré avec une variable de classe avec static. De plus, comme dans d'autres langues, toutes les constantes sont écrites en majuscules.
//Classe avec finale
class FinalDemo {
public static final String NAME = "Variables avec final";
}
class MyApp {
public static void main(String[] args) {
//Changer la constante
FinalDemo.NAME = "Réaffectation";
}
}
Résultat d'exécution
$ java MyApp
Error:(9, 18) java:Vous ne pouvez pas attribuer une valeur à la variable finale NAME
Recommended Posts