Différence entre la classe abstraite et l'interface dans C #

Différence entre la classe abstraite et l'interface dans C #

Classe abstraite

Une classe abstraite est celle qui est destinée à être une classe de base d'autres classes. Le modificateur «abstrait» est utilisé pour faire un résumé de classe. Un modificateur abstrait indique qu'il y a une implémentation manquante qui doit être implémentée dans la classe en dérive. La classe abstraite peut avoir des membres abstraits et non abstraits. Une classe abstraite devrait avoir au moins une méthode abstraite, sinon, il n'y a pas de usage de déclarer cette classe comme «Résumé.'

Exemple de classe abstrait en C #:
Comme le montre l'exemple ci-dessus, la méthode abstraite «zone» à l'intérieur de la classe MyCircle est remplacée dans la classe dérivée Myarea.

Interface

Une interface ne contient que la déclaration de membres, y compris les méthodes, les propriétés, les événements ou les indexateurs. Il ne contient pas la mise en œuvre de ces membres. Une classe ou une structure implémente l'interface, doit fournir la définition des méthodes déclarées dans l'interface. Cela signifie qu'une interface fournit une structure standard que la classe dérivée doit suivre.

Exemple d'une interface en C #:
Comme indiqué dans l'exemple ci-dessus, l'interface MyData a deux méthodes de déclaration getData () et showData (). La classe Namedata qui implémentait cette interface devrait donner la définition des méthodes déclarées dans l'interface MyData.

Différence entre la classe abstraite et l'interface

  1. Une classe abstraite peut avoir des membres abstraits et non abstraits. Mais, dans une interface, tous les membres sont implicitement abstraits et doivent être remplacés dans la classe dérivée.
  2. Une classe peut hériter de plusieurs interfaces mais une seule classe abstraite.
  3. Une classe abstraite peut contenir des méthodes avec ou avec une définition. Mais, une interface ne peut contenir que la signature de la méthode.
  4. Une classe abstraite peut entièrement, partiellement ou non implémentée du tout, mais une interface doit être pleinement implémentée, je.e., Tous les membres doivent être définis dans la classe de dérivation.
  5. Une interface ne peut pas contenir de modificateurs d'accès, mais une classe abstraite peut l'avoir pour les fonctions, les propriétés ou les événements.