Quequ'un peut-il m'expliquer la différence entre le modifieur new et le couple de modifier virtual/override:
Quequ'un peut-il m'expliquer la différence entre le modifieur new et le couple de modifier virtual/override:
Oui, MSDN :)
la différence, c'est qu'avec le modifier new, tu perds tous les avantages du polymorphisme.
Exemple :
Soit une classe MyBaseClass avec une méthode SomeMethod déclarée virtual.
Soit une classe MyDerivedClass qui hérite de MyBaseClass, dans laquelle on déclare une méthode SomeMethod
Cas 1: dans la classe dérivée, on utilise le modifier override
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 MyDerivedClass d = new MyDerivedClass(); MyBaseClass b = d; d.SomeMethod(); b.SomeMethod();
Les deux appels à SomeMethod sont identiques : c'est bien la méthode de la classe dérivée qui sera appelée dans les 2 cas.
Cas 2: dans la classe dérivée, on utilise le modifier new
d.SomeMethod appelle la méthode de la classe dérivée, tandis que b.SomeMethod appella la méthode de la classe de base.
Personnellement, je crois qu'avec un bon design OO, on ne devrait jamais utiliser le modifier new. Mais ça n'engage que moi, bien évidemment...
Merci à crjo pour sa réponse. Voila qui est clair.![]()
Je suis désolé si ma question n'a pas interressé Maniak mais une chose est sûre sa réponse n'interresse personne.
J'oubliais: tout est dans MSDN.![]()
Vi, notamment des exemples du même genre que ci-dessus et beaucoup plus de détails. Bref à portée de F1.Envoyé par jab
Désolé du manque d'enthousiasme pour taper une réponse qui se trouve en quelques secondes hein :)
Partager