public Client0(IMere poMere) //<<<< Param. de type plus général que le constructeur de la classe enfant Client0 { Console.WriteLine("\n\n-------- Dans constructeur de Client0 --------\n"); poMere.methode(); //Lorsque poMere est AUSSI de type IEnfant, alors par POLYMORPHISME (car override methode() dans classe Enfant), //c'est bien methode() de Enfant qui sera appelée (tout comme dans le cas d'un new Client0(new Enfant()) //REMARQUE: si dans Enfant j'avais utilisé le mot-clef new au lieu de override, eh bien le résultat aurait été le même !? //poMere.methodeEnfant(); //INTERDIT bien sûr !! ok Console.WriteLine("\n-------- FIN constructeur de Client0 !--------\n\n\n"); }
private IMere _oMere; //{IMere} public Client0(IMere poMere) //<<<< Param. de type plus général que le constructeur de la classe enfant Client0 { this._oMere = poMere; Console.WriteLine("\n\n-------- Dans constructeur de Client0 --------\n"); this._oMere.methode(); //Pourquoi ????? est-ce methode() de IEnfant qui est appelée !?? Lorsque poMere reçu est de type réel IEnfant !?? this._getMere().methode(); //Même question !!!!! puisqu'à ce stade this._oEnfant dans Client1 n'est même pas encore défini !!!???? //this._oMere.methodeEnfant(); //INTERDIT bien sûr !! ok Console.WriteLine("n-------- FIN constructeur de Client0 !--------\n\n\n"); }