-
héritage
bonsoir a tous
J'ai un probleme d'heritage ...
Lorsqu'une classe herite d'une classe abstraite elle n'est pas obligé d'hériter de toutes ses méthodes. OK ?
voici mon arborescence
- Engin (classe abstraite qui dispose des méthodes abstraite FaireA() et FaireB() )
- Véhicule (classe abstraite qui hérite de Engin et qui implemente une méthode FaireB() )
- Voiture(classe abstraite qui hérite de Véhicule et qui n' implemente pas de méthode et le pb est la ... )
- VoitureRouge (classe non abstraite et qui hérite de Voiture et qui n'implemente aucune méthode )
Le probleme erreur de compil :
voitureRouge is not abstract and does not override faireA()
que faire merci
-
Effectivement, une classe dérivée d'une classe abstraite n'est pas obligée de redéfinir toutes les méthodes abstraites de la classe de base.
MAIS, dans ce cas la classe dérivée devient elle aussi abstraite.
Donc, dans VoitureRouge, comme tu ne définis aucune méthode, ca ne marche pas. Car faireA() n'a jamais été définis.
Je suppose que tu essayais de créer une instance de VoitureRouge ?
-
C'est à dire que
a partir du moment ou tu herite d'une classe abstraite
soit tu herites de toutes ses methodes
soit tu herites de certaines methodes et tu es aussi abstraite
C'est ça ?
-
Le but d'une classe abstraite c'est d'obliger quelqu'un qui l'utilise a redéfinir toutes les méthodes abstraites.
Donc, en effet, temps qu'il reste des méthodes abstraites non définies, la classe dérivée reste abstraite, donc non instanciable.
-