Maison > Java > javaDidacticiel > Pourquoi la suppression des constructeurs de sous-classes provoque-t-elle un « super constructeur implicite non défini » en Java ?

Pourquoi la suppression des constructeurs de sous-classes provoque-t-elle un « super constructeur implicite non défini » en Java ?

Mary-Kate Olsen
Libérer: 2024-12-01 06:24:18
original
382 Les gens l'ont consulté

Why Does Removing Subclass Constructors Cause

Erreur Java : super constructeur implicite non défini pour le constructeur par défaut

Dans le but de réduire la redondance du code, vous avez rencontré une erreur lors de la suppression constructeurs de sous-classes qui étendent une classe abstraite. Cette erreur provient du constructeur implicite par défaut généré par le compilateur Java lorsqu'une classe ne dispose pas d'un constructeur explicitement défini.

Le constructeur par défaut n'a aucun argument et est équivalent à public ACSubClass() { super(); }. Cependant, puisque BaseClass déclare un constructeur, ce constructeur par défaut n'est pas disponible, ce qui entraîne une erreur de compilation.

Raison de l'erreur :

La cause première de ce problème réside dans la sémantique d'héritage de Java. Les sous-classes n'héritent pas automatiquement des constructeurs de leurs classes parentes. Si une sous-classe ne définit aucun constructeur, elle hérite implicitement du constructeur par défaut de sa classe parent.

Solution :

Pour résoudre cette erreur, vous disposez de deux options principales :

  • Définir le constructeur par défaut dans BaseClass : Supprimer le constructeur explicite de BaseClass (c'est-à-dire, supprimez public BaseClass(String someString)) pour activer le constructeur par défaut.
  • Fournir un constructeur explicite sans argument dans les sous-classes : Si BaseClass nécessite des arguments pour construire une instance valide, vous pouvez ajoutez un constructeur explicite sans argument aux sous-classes. Par exemple, dans ASubClass : public ASubClass() { super(null); }. Cela garantit que la sous-classe peut appeler super() avec l'argument approprié.

À retenir :

Les règles d'héritage des constructeurs de Java sont conçues pour empêcher les sous-classes de créer instances non valides de leurs classes parentes. En examinant attentivement les exigences du constructeur de la base et des sous-classes, vous pouvez éviter les erreurs d'exécution liées à des constructions manquantes ou inappropriées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal