codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
25 avril 2008 à 14:48
tinaprincesse
Messages postés4Date d'inscriptionlundi 14 décembre 2009StatutMembreDernière intervention29 mai 2010
-
26 mai 2010 à 17:45
Bonjour à tous :)
Voila, nouveau en C# je suis bloqué sur un problème d'héritage.
J'ai une classe mère abstraite, AbsClass, qui contient un constructeur public AbsClass (int val1, int val2, bool val3);
J'ai une classe fille qui étends AbsClass : ChildClass : AbsClass
Je ne met pas de constructeur dans cette classe fille, juste une méthode setValue ();
Quand je compile le tout, j'obtient cette erreur :
"No overload method for method AbsClass takes 0 arguments"
Pour le moment j'ai du implémenter dans mes classes filles le constructeur ChildClass (int val1, int val2, bool val3) : base (val1, val2, val3);
mais j'espere qu'il y a une méthode plus "logique" car j'ai 20 classes filles et j'envisage de modifier le constructeur de la classe abstraite ... :p
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 25 avril 2008 à 15:27
Ne le prenez pas mal mais :
C'est débile !!!!
Je m'explique :
Si je fait une classe abstraite, c'est justement pour éviter la redondance de code dans mes classes filles. Hors déjà rien que là ça prouve le contraire.
De plus, si maintenant j'ai beaucoup de classes filles qui étendent une classe abstraite, et que je désire modifier le constructeur de la classe mere, il va faloir que je fasse les modifs dans TOUTES les classes filles ?!!!!! C'est pas vraiment du principe de la POO ca ? Sur ce coup là, Java marque un point (sans vouloir lancer un troll ;))
En tout cas merci de vos réponses :)
, centre R&D de mes projets :)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 25 avril 2008 à 15:55
Oué je pense que ce sera la seule solution.
C'est quand même bizare de réagir comme ca alors qu'il suffit de remonter sur les classes parent. Je ne comprends vraiment pas microsoft sur ce point !
En tout cas merci pour l'idée, je pense que je vais me tourner vers cette solution ! :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 25 avril 2008 à 16:07
En fait c'est pas le cas sous php et je trouvais ca bien plus logique. Puisqu'une classe fille possède les objets public et private de la classe mère, ce qu'il manque dans la classe fille, on va le chercher dans la classe mere, comme un constructeur :p
Le probleme c'est pas que j'ai 50 parametres, c'est juste que si je veux en modifier un, il faut tout modifier. Mais jvais faire ca avec un singleton et des getters/setters et zou :p
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 25 avril 2008 à 20:42
Euh là je ne suis pas sur de comprendre, ta une classe mere avec deux constructeur possibles, et t'a une classe fille avec une méthode SetValue qui contient la meme signature qu'un de deux constructeurs. En quoi SetValue va indiquer au compilateur que meme sans définir un constructeur fils spécifique il s'y retrouvera ?
Ou tu veux dire que pour chaque valeurs à définir par le constructeur parent, il faut faire des setters pour permettre de gerer ses valeurs si on les appels pas directement dans le constructeur ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 26 avril 2008 à 01:21
Mon code c'est pour éviter le message d'erreur "No overload method for method AbsClass takes 0 arguments" dans le cas ou la classe dérivée ne doit pas appeler le ctor paramètré de sa classe de base mais plutôt utiliser une méthode SetValue.