Maison >Java >javaDidacticiel >Comment résoudre l'erreur « Le super constructeur implicite n'est pas défini » dans les sous-classes Java ?

Comment résoudre l'erreur « Le super constructeur implicite n'est pas défini » dans les sous-classes Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 09:23:10836parcourir

How to Resolve the

Suppression des constructeurs redondants dans les sous-classes avec le constructeur par défaut

Lorsque vous travaillez avec l'héritage en Java, il est courant de rencontrer le message "Le super constructeur implicite n'est pas défini pour l'erreur du constructeur par défaut". Cela se produit lorsqu'une sous-classe ne définit pas explicitement un constructeur mais étend une classe de base avec un constructeur paramétré.

Pour comprendre cette erreur, il est important de clarifier le comportement des constructeurs en Java :

  • Constructeurs par défaut : Les classes sans constructeurs explicitement déclarés ont un constructeur par défaut sans argument fourni par le compilateur.
  • Constructeurs hérités : Si une sous-classe ne déclare pas de constructeur, elle hérite de tous les constructeurs disponibles de sa classe parent.

Dans votre exemple, la BaseClass a un constructeur paramétré mais pas de constructeur par défaut. Cela signifie que l'ACSubClass n'a pas de constructeur par défaut et doit en définir un explicitement.

Cependant, comme la BaseClass a un constructeur paramétré, elle n'a pas implicitement de constructeur par défaut. Cela entraîne l'erreur car ACSubClass ne peut pas hériter d'un constructeur inexistant de BaseClass.

Il existe deux façons de résoudre ce problème :

  1. Fournir un sans argument Constructeur dans BaseClass :
    Ajoutez un constructeur par défaut à BaseClass qui initialise le champ someString à une valeur par défaut ou null. Cela garantit que toutes les sous-classes peuvent hériter d'un constructeur sans argument pour satisfaire l'appel du super constructeur.
  2. Définissez explicitement le constructeur de sous-classe :
    Au lieu de vous fier à l'héritage du constructeur, définissez explicitement un constructeur dans chaque sous-classe qui appelle le super constructeur et transmet les arguments requis. Cette approche évite les problèmes potentiels liés à l'héritage du constructeur et garantit que le constructeur de la classe de base est toujours invoqué.

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