En Java, toutes les méthodes sont par défaut virtuelles alors qu'en C#, comme en C++, le développeur doit explicitement l'indiquer. C'est pourquoi, C# propose un mot-clé n'ayant pas d'équivalent en Java : virtual. Ici encore, cette caractéristique a toujours été
source de moult discussions entre pour et contre. Néanmoins, il faut noter que la nature virtuelle des méthodes constitue un frein aux optimisations de la machine virtuelle devant prévoir l'extensibilité de la classe en question. Une autre raison dans le choix de C# pourrait s'expliquer par le fait que les méthodes virtuelles peuvent être accidentellement redéfinies par le développeur dans une sous-classe. Dans ce cas, l'appel à la méthode de la classe mère sera masqué par la méthode fille et pourrait engendrer des résultats inexplicables.
Partager