Bonsoir,
J'ai une classe abstraite qui redéfinit ToString(). J'ai une classe qui hérite de celle-ci et redéfinit aussi ToString(). Mais lorsqu'elle est invoquée, c'est la méthode de la classe de base qui est exécutée. Je donne le code mettre un nom sur mes classes et qu'on se comprenne.
Il me semblait que la méthode ToString() du type réel ClasseDerivee devait être exécutée mais c'est pourtant celle de la classe de base qui l'est.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public abstract class ClasseDeBasse { private string name ; ... public override string ToString() //J'ai testé avec "public virtual string ToString()" sans succès { return String.Concat("ToString de la classe de base : objet ", this.name); } static void Main(string[] args) { ClasseDeBasse monObjet = new ClasseDerivee("toto"); Console.WriteLine(monObjet.ToString()); //affiche "ToString de la classe de base : objet toto" } } public class ClasseDerivee : ClasseDeBasse { ... public override string ToString() { return String.Concat(base.ToString(), ". Mais je suis en fait une ClasseDerivee."); } }
J'ai suivi ce guide qui me semblait ok mais je n'ai pas le résultat attendu.
J'ai peut être fait des fautes dans le code car j'ai retranscrit en simplifiant mais normalement les clés sont là.
Si quelqu'un sait où je fais fausse route, merci de m'éclairer.
Partager