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

Classe abstraite
Une classe abstraite est une classe qui est uniquement destinée à être une classe de base d'autres classes. Le modificateur 'abstract' est utilisé pour rendre une classe abstraite. Un modificateur abstrait indique qu'il manque une implémentation dans la classe qui en découle. La classe abstraite peut avoir des membres abstraits et non abstraits. Une classe abstraite doit avoir au moins une méthode abstraite, sinon, il n'est pas utile de déclarer cette classe comme "abstraite".

Exemple de classe abstraite en C #:

1234567891011 classe abstraite MyCircle classe abstraite publique int (); classe MyArea: MyCircle substitution publique int Area () retourne * côté; .....

Comme indiqué dans l'exemple ci-dessus, la méthode abstraite 'Area' de la classe MyCircle est remplacée par la classe dérivée MyArea..

Interface
Une interface ne contient que la déclaration de membres, y compris des méthodes, des propriétés, des événements ou des indexeurs. Il ne contient pas l'implémentation 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'interface en C #:

12345678910111213141516171819202122 using System.Collections.Generic; using System.Linq; using System.Text; namespace MyName interface publique MyData void getdata (); showdata vide (); Classe publique NameData: MyData public double getdata () nom de chaîne; Console.WriteLine ("Entrez le nom:"); name = Console.ReadLine (); public void showdata () Console.WriteLine ("Mon nom est:", nom);

Comme le montre l'exemple ci-dessus, l'interface MyData a deux déclarations de méthode, getdata () et showdata (). La classe NameData qui implémente cette interface doit 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 ainsi que des membres 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 d'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 méthode.
  4. Une classe abstraite peut être totalement, partiellement ou totalement implémentée, mais une interface doit être entièrement implémentée, c’est-à-dire que tous les membres doivent être définis dans la classe dérivée..
  5. Une interface ne peut pas contenir de modificateurs d'accès, mais une classe abstraite peut en disposer pour des fonctions, des propriétés ou des événements.
IL