Questionnement sur "virtual"
Bonjour,
Je débute en C# et me suis récement apercu que la redéfinition d'une méthode dans une classe qui hérite d'une autre ne fonctionnait pas comme en Java.
En effet, si on a : classe C2 hérite de C1 et C1.truc() redéfini dans C2. alors, il faut que C1.truc() soit défini avec le mot clé "virtual" pour que l'appel à la méthode truc() depuis un objet de type C2 casté en C1 éxécute bien C2.truc().Autrement, c'est la méthode C1.truc() qui est appelée.
On peut donc en conclure que pour retrouver le comportement de Java, il faut déclarer toutes ses méthodes avec le mot clé virtual (et toutes les redéfinitions avec le mot clé "override"). Ce qui veut dire que Microsoft a choisi que, par défaut, les méthodes d'une classes ne pourraient pas etre redéfinie "en profondeur" dans les classes enfant.
A premiere vue, ce choix me parait tout à fait criticable et je suis meme décu de découvrir cette subtilité.
C'est pourquoi je m'intéroge sur les raisons de ce choix et me tourne vers vous , ésperant oobtenir quelques éléments de réponse...