super () dans le constructeur: une question de nécessité
Dans le domaine de la programmation orientée objet, les constructeurs jouent un rôle crucial dans l'initialisation objets nouvellement créés. Cependant, la question se pose: est-il essentiel d'appeler explicitement la méthode super () dans le constructeur d'une sous-classe?
Invocation automatique
en l'absence d'un super (super (super ( ) Appel, le compilateur invoque automatiquement le constructeur de no-args accessible dans la superclasse. Ce constructeur n'a pas de paramètres et est vital pour initialiser correctement les constructeurs d'instance de Superclass. Un constructeur de la superclasse avec une liste d'argument correspondante. Si aucun constructeur correspondant n'est trouvé, une erreur se produit. En d'autres termes, le constructeur invoqué via super () doit avoir des arguments qui correspondent exactement aux arguments transmis au constructeur de la sous-classe. Le constructeur Args dans la superclasse doit être visible par la sous-classe. Si le constructeur superclass est privé ou protégé, un appel explicite vers super () avec des arguments appropriés est nécessaire pour invoquer le constructeur correct.
Exemples
pour illustrer ces concepts , considérez les extraits de code suivants:
classe publique Base {// NO-ARGS Constructeur} public class dérivé Étend Base {// Le constructeur par défaut sera invoqué par le compilateur}
Dans ce cas, le constructeur par défaut de la base sera automatiquement invoqué lorsqu'une instance de dérive est créée.
classe publique Base {public Base (int i) {}} public class dérivé étend la base {public Dérivé (int i) {super (i); }} Ici, le constructeur en dérivé invoque explicitement le constructeur correspondant en base avec l'argument i.
classe publique Base {private base () {}} public class dérivé Base {} // Erreur: Aucun constructeur sans args accessible dans SuperClass
public class Base { // No-args constructor } public class Derived extends Base { // Default constructor will be invoked by the compiler }
en conclusion, tandis que le Le compilateur invoque automatiquement le constructeur NO-Args accessible dans la superclasse, les appels super () explicites sont essentiels lorsque le constructeur d'une sous-classe a des arguments ou lorsque le constructeur du superclasse n'est pas accessible. Comprendre ces nuances est crucial pour assurer une initialisation appropriée d'objets en java.
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