Instanciation d'une classe fille

hsmr -  
hsmr Messages postés 6 Statut Membre -
Bonjour,
Je suis nouveau sur ce forum. Et j'ai une question au sujet de l'héritage d'une classe abstraite. Ma classe fille F hérite d'une classe mere M qui est abstraite ( donc avec des méthodes virtuelles pures). Lors de l'implementation de la classe fille F je fais appelle au constructeur de la classe mere. Mais lors de la compilation, le compilateur rale en me disant qu'il n'a pas le droit d'instancier la classe mère M dans la classe fille F à cause de son abstration.
Une idée pour m'aider svp ?
Merci

3 réponses

Rollin'babe !!
 
Bjour,

Une classe Abstraite, sauf erreur de ma part, ne comporte pas de constructeur mais que des méthodes.
Elle ne peut être instanciée mais seulement dérivée et toutes ses méthodes doivent être redéfinies dans ta classe fille.

Salutations.
1
Rollin'babe !!
 
Additif,

Les méthodes des classes abstraites ne sont pas définies mais simplement déclarées.
Ta classe fille doit implémenter ces méthodes mais tu n'est pas obligé de les définir si tu ne veux pas les utiliser.

Nuances (:>).
Salutations.
0
Utilisateur anonyme
 
Tu parles de quoi là ?
Quel logiciel, tu essaie de faire quoi ?
On est censé tout deviner par télépathie ?
-2
hsmr Messages postés 6 Statut Membre
 
Bjr
Je parle de faire hériter une classe fille d'une classe mère abstraite. Désolé je suis en C++ j'oubliais.
Bref :
- une classe Figure abstraite qui contient une seule donnée membre.
- une classe Rectangle fille qui hérite de la classe mere abstraite Figure.

Ma classe Figure contient des méthodes virtuelles pures donc elle est abstraite; J'y ai mis un constructeur.
Dans la classe Rectangle qui hérite de la classe Figure j'ai écrit un constructeur dans lequel je rappelle le constructeur de la classe Figure.

Et à la compile j'ai un message d'erreur me disant que la classe Figure ne peut être instancié du fait qu'elle est abstraite.
Je ne comprends pas trop cette erreur car j'étais avant en java et je bascule en C++. Donc mon adaptation est un peu délicate du fait des comportements différents de ces deux langages.

Merci
-1
cKoiDonc ?? > hsmr Messages postés 6 Statut Membre
 
Re,

Voir plus bas...
Pas de constructeur dans une classe Abstract car on ne peux pas l'instancier - vous toujours essayer de compiler mon cher ami (:>) - que ce soit en C++, Java, C# et autres.....

java.sun.com/docs/books/tutorial/java/IandI/abstract.html

Capito ?.
Have a nice day.
0
Rollin'babe !! > hsmr Messages postés 6 Statut Membre
 
Ok,

Je t'avais mal lu : tu n'instancies pas la classe abstraite mais tu appelle seulement son constructeur par un super() dans le constructeur de la classe fille.
Je ne connaissais pas cette subtilité en Java ...

Bonne soirée.
0
Rollin'babe !! > hsmr Messages postés 6 Statut Membre
 
Re,

Exemple d'un appel d'un constructeur de la classe Mere à l'appel du constructeur de la classe fille :

Fille::Fille(void) : Mere(2)
{
printf("Exécution du constructeur de la classe fille.\n");
return;
}

Il faut spécifier explicitement le nom du constructeur de la super-classe avec ses paramètres : c'est l'équivalent du super() en Java.

A+.
0
Rollin'babe !! > hsmr Messages postés 6 Statut Membre
 
Re,

Je n'ai pour ma part jamais entendu parlé de la possibilité d'effectuer un appel explicite de constructeur de super-classes abstraites.
Il me semble que définir un constructeur pour ce type de classe reste un peu "exotique" comme pratique en C++ mais j'avoue que je ne me suis jamais vraiment penché sur la question (:<) mais je vais me renseigner et on se tient au courant.

A+.
0