Maison >Java >javaDidacticiel >`super()` est-il obligatoire dans les constructeurs de sous-classes ?

`super()` est-il obligatoire dans les constructeurs de sous-classes ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 22:23:30689parcourir

Is `super()` Mandatory in Subclass Constructors?

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.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn