web-dev-qa-db-fra.com

Comparaison: méthodes d'interface vs méthodes virtuelles vs méthodes abstraites

Quels sont les avantages et les inconvénients de chacun d'eux?

  • méthodes d'interface
  • méthodes virtuelles
  • méthodes abstraites

Quand faut-il choisir quoi? Quels sont les points à retenir lors de la prise de décision?

51
Nawaz

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, tandis qu'une méthode abstraite n'a pas et doit être remplacée dans une classe enfant. Sinon, ce sont les mêmes. Le choix entre eux dépend de la situation. Si vous avez une implémentation de base, vous utilisez virtuel. Si vous ne le faites pas et que vous avez besoin que chaque descendant l'implémente pour lui-même, vous choisissez l'abstrait.

Les méthodes d'interface sont des implémentations d'une méthode qui est 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 d'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, tant que les méthodes que vous souhaitez appeler sont déclarées dans une interface qu'elles partagent.

48
GolezTrol