En Java, lors du processus de construction d'une sous-classe, le constructeur de sa classe parent doit être appelé. En effet, lorsqu'une relation d'héritage existe, la sous-classe doit hériter du contenu de la classe parent.
La réponse est la suivante :
Lorsque vous créez un objet de sous-classe, vous devez d'abord créer un nouvel objet de la classe parent. Cet objet de classe parent est situé à l'intérieur de l'objet de sous-classe. Par conséquent, l'objet de sous-classe est plus grand que l'objet de classe parent. situation réelle en mémoire. Lorsque la méthode de construction est un nouvel objet, il faut l'appeler. C'est une règle. Si vous souhaitez créer un nouvel objet de classe parent, vous devez appeler sa méthode de construction, donc :
La première règle : Lors du processus de construction d'une sous-classe, la méthode de construction de sa classe parent doit être appelée. Pour une classe, si nous n'écrivons pas de constructeur, le compilateur nous aidera à ajouter un constructeur par défaut. Le constructeur dit par défaut est un constructeur sans paramètres, mais si vous écrivez le constructeur vous-même, alors le compilateur ne le fera pas. ajouté pour vous, donc parfois lorsque vous créez un nouvel objet de sous-classe, le constructeur de la sous-classe doit être appelé, mais dans le constructeur de la sous-classe, nous n'appelons pas explicitement le constructeur de la classe de base, c'est-à-dire qu'il n'y a pas d'écriture , tel que : super(); n'est pas écrit comme ça, mais il appellera le constructeur sans paramètres de la classe parent. S'il n'y a pas de constructeur sans paramètres dans la classe parent, une erreur se produira.
La deuxième règle : s'il n'y a pas d'appel explicite au constructeur de la classe de base dans le constructeur de la sous-classe, le système appelle par défaut le constructeur sans paramètre de la classe de base. Remarque : s'il n'y a pas d'appel explicite au constructeur de la classe de base dans le constructeur de la sous-classe. constructeur de la sous-classe. et qu'il n'y a pas de constructeur sans paramètre par défaut dans la classe de base, une erreur de compilation se produit. Par conséquent, nous devons généralement afficher : super (liste de paramètres) pour appeler le constructeur de la classe parent avec des paramètres.
//Si vous définissez un nouveau constructeur
animal public (nom de la chaîne) {
this.name = nom ;
}
}
Le chien public étend l'animal{
//À ce stade, vous devez appeler explicitement le constructeur de la classe parent, car la sous-classe appelle la classe parent par défaut.
//Aucun constructeur de paramètre Animal()
Chien public(){
super("chiot"); //Affiche la méthode constructeur paramétrée pour appeler la classe parent
.... //Traitement par méthode constructeur des sous-classes
}
}
//Bien sûr, si vous écrivez explicitement le constructeur sans paramètre dans la classe parent, par exemple :
classe Animal{
nom de chaîne privé ;
//Méthode de construction sans paramètres
animal public() {
..... //faire face
}
/*
Si vous définissez un nouveau constructeur, alors dans le constructeur de la sous-classe, vous pouvez appeler le constructeur de la classe parent sans l'appeler explicitement, car la sous-classe a un constructeur sans paramètre.
La sous-classe appellera automatiquement le constructeur sans paramètre défini par la classe parent dans le constructeur.
*/
public Animal (Nom de la chaîne) {
this.name = nom ;
}
}