La présence de super() dans les constructeurs est-elle facultative ?
Dans la programmation orientée objet, il est courant d'utiliser des constructeurs dans les classes dérivées pour invoquer des constructeurs dans leurs superclasses. Cependant, certains développeurs remettent en question la nécessité de spécifier explicitement super() dans les constructeurs.
Invocation automatique de super() par le compilateur
Le compilateur Java insère automatiquement un appel au constructeur sans argument accessible de la superclasse si le constructeur de sous-classe ne spécifie pas de constructeur de superclasse. Cela signifie que dans la plupart des cas, l'omission de super() n'affecte pas le comportement du programme.
Exceptions à la règle
Cependant, il existe des situations où l'invocation explicite de super() est requise :
Utilisation du constructeur en présence de Arguments
Lorsqu'un constructeur de sous-classe a des arguments, il est de la responsabilité du constructeur de sous-classe de transmettre les arguments appropriés au constructeur de superclasse. Le compilateur n'invoquera pas automatiquement un constructeur de superclasse avec des arguments, sauf indication contraire explicite.
Exemple
Considérez le code suivant :
<code class="java">public class Base { private Base() {} } public class Derived extends Base { public Derived(int i) { super(); // Call the default no-args constructor of Base } }</code>
Dans Dans cet exemple, l'appel super() dans le constructeur Derived est essentiel car Base possède un constructeur privé sans argument.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!