Comprendre la nécessité de super() dans les constructeurs de sous-classes
Lors de la création de sous-classes en Java, la question se pose de savoir si le super() l'appel de méthode est obligatoire dans le constructeur de la sous-classe. Cet article approfondit ce sujet en apportant des éclaircissements sur les aspects suivants :
Insertion automatique de super() par le compilateur
La réponse courte à cette question est non. Le compilateur n'insère pas automatiquement un appel super() dans le constructeur de la sous-classe si cela n'est pas explicitement indiqué. Ainsi, le constructeur de sous-classe doit toujours spécifier le constructeur de superclasse qu'il a l'intention d'invoquer.
Non-existence d'équivalents de constructeur sans argument
Il est important de comprendre que ne pas mettre un appel super() dans le constructeur de sous-classe n'implique pas que le compilateur insérera un constructeur équivalent sans arguments. Si la superclasse ne dispose pas d'un constructeur sans argument accessible, l'omission de l'appel super() entraînera une erreur de compilation.
Invocation du constructeur lorsque des arguments sont présents
Considérons un constructeur de sous-classe avec des arguments. Dans ce cas, l'appel super() est requis pour spécifier le constructeur de superclasse à invoquer. Le constructeur de superclasse invoqué est principalement déterminé par les arguments réels transmis au constructeur de la sous-classe. Si aucune liste d'arguments n'est spécifiée dans l'appel super(), il invoquera le constructeur de superclasse qui correspond à l'ordre et aux types des arguments de construction de la sous-classe.
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