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 des 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 d'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 à le 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 :
public class Base {
private Base() {}
}
public class Derived extends Base {
public Derived(int i) {
super(); // Call the default no-args constructor of Base
}
}
Dans cet exemple, l'appel super() dans le constructeur Derived est essentiel car Base possède un constructeur privé sans argument.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3