Recommandé, 2024

Choix De L'Éditeur

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érive. La classe abstraite peut avoir des membres abstraits et non abstraits. Une classe abstraite doit avoir au moins une méthode abstraite, sinon, il est inutile de déclarer cette classe comme "abstraite".

Exemple de classe abstraite en C #:

classe abstraite MyCircle {abstract public int Area (); } Classe MyArea: MyCircle {public override int Area () {return side * side; .....}}
1 2 3 4 5 6 7 8 9 10 11classe abstraite MyCircle {abstract public int Area (); } Classe MyArea: MyCircle {public override int Area () {return side * side; . . . . . }}

Comme le montre 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 #:

using System.Collections.Generic; using System.Linq; using System.Text; espace de noms 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); }}}
1 2 3 4 5 6 7 8 9 10 11 12 14 14 15 16 17 18 19 20 21 22using System. Collections. Générique ; using System. Linq; using System. Texte ; espace de noms MyName {interface publique MyData {void getdata (); showdata vide (); } Classe publique NameData: MyData {public double getdata () {nom de chaîne; Console . WriteLine ("Entrez le nom:"); nom = 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. Cependant, 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.
Top