Pourquoi sommes-nous autorisés à avoir une méthode principale finale en java?
Quelqu'un peut-il me dire l'utilisation de la méthode main comme finale en java.
Alors que cela est autorisé en java
public static final void main(String[] args) {
}
Je ne vois aucune utilité de le rendre final. quoi qu'il en soit, il est statique, nous ne pouvons donc pas le remplacer.
1 answers
Ajouter final
à une méthode statique peut réellement faire une différence. Considérons le code suivant:
class A {
public static void main(String[] args) {
System.out.println("A");
}
}
class B extends A {
public static void main(String[] args) {
System.out.println("B");
}
}
class C extends B {
}
public class Test {
public static void main(String[] args) {
C.main(args); // Will invoke B.main
}
}
Ajouter final
à A.main
empêcherait la dissimulation accidentelle de A.main
. En d'autres termes, l'ajout de final
à A.main
garantit que B.main
n'est pas autorisé, et que C.main
, par conséquent, imprime "A"
, par opposition à, par exemple "B"
.
Pourquoi sommes-nous autorisés à avoir une finale principale méthode en java?
À côté du cas d'angle ci-dessus, en ajoutant final
à un statique la méthode ne fait pas beaucoup de différence, donc je ne vois pas un grand intérêt à ajouter une règle pour la refuser.
Plus d'informations disponibles ici: Comportement de la méthode statique finale