2011-01-21 6 views

Répondre

37

Virtuel et abstrait sont presque les mêmes. Une méthode virtuelle a une implémentation dans la classe de base qui peut éventuellement être remplacée, alors qu'une méthode abstraite n'a pas et doit être être remplacé dans une classe enfant. Sinon, ils sont identiques. Choisir entre eux dépend de la situation. Si vous avez une implémentation de base, vous utilisez virtual. Si vous ne le faites pas, et que vous avez besoin de chaque descendant pour l'implémenter, vous choisissez abstrait.

Les méthodes d'interface sont des implémentations d'une méthode déclarée dans une interface que la classe implémente. Cela n'a rien à voir avec les deux autres. Je pense qu'une méthode peut être à la fois virtuelle et interface. L'avantage des interfaces est que vous déclarez une interface (duh) qui peut être implémentée par deux classes totalement différentes. De cette façon, vous pouvez exécuter le même code sur deux classes différentes, à condition que les méthodes que vous souhaitez appeler soient déclarées dans une interface qu'elles partagent.

+4

pour plus de détails à ce sujet, voir http://stackoverflow.com/a/3621600/8151. tl; dr: les méthodes d'interface sont déclarées virtuelles dans l'IL émise. – cori