149 votes

Interfaces vs classes abstraites

Dans C#, quand devez-vous utiliser des interfaces et quand devez-vous utiliser des classes abstraites ? Quel peut être le facteur décisif ?

117voto

Guffa Points 308133

Les classes abstraites et les interfaces sont sémantiquement différentes, bien que leur utilisation puisse se chevaucher.

Une classe abstraite est généralement utilisée comme base de construction pour des classes similaires. L'implémentation qui est commune pour les classes peut être dans la classe abstraite.

Une interface est généralement utilisée pour spécifier une capacité pour les classes, où les classes n'ont pas besoin d'être très similaires.

13voto

Zifre Points 14109

Une autre chose à considérer est que, comme il n'y a pas d'héritage multiple, si vous voulez qu'une classe puisse implémenter/hériter de votre classe interface/abstraite, mais hériter d'une autre classe de base, utilisez une interface.

10voto

Dave Van den Eynde Points 8199

La vraie question est de savoir s'il faut utiliser des interfaces ou des classes de base. Cette question a déjà été abordée.

En C#, une classe abstraite (celle marquée du mot-clé "abstrait") est simplement une classe à partir de laquelle on ne peut pas instancier des objets. Cela a un but différent de celui de faire simplement la distinction entre les classes de base et les interfaces.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X