Les interfaces en C#
Les interfaces sont utilisées avec des classes pour définir ce que l’on appelle un contrat. Un contrat est un accord sur ce que la classe fournira à une application.
Une interface déclare les propriétés et les méthodes. Ensuite la classe définit exactement ce que fera la méthode.
En C#, une interface peut être définie à l’aide du mot clé interface. Les interfaces peuvent contenir des méthodes, des propriétés, des indexeurs et des événements en tant que membres.
Syntaxe:
interface MyInterface { /* Toutes les méthodes sont publiques par défaut * Et ils n'ont pas de corps */ void method1(); void method2(); }
Exemple d’interface en C#
Voici comment une classe implémente une interface. Il doit fournir le corps de toutes les méthodes déclarées dans l’interface ou en d’autres termes, il doit implémenter toutes les méthodes de l’interface.
using System; public interface A { void method1(); void method2(); } class B: A { public void method1() { Console.WriteLine("La méthode 1 est implémentée"); } public void method2() { Console.WriteLine("La méthode 2 est implémentée"); } } public class Program { public static void Main(string[] args) { B b = new B(); b.method1(); } }
La sortie :
La méthode 1 est implémentée
Quand on devrait choisir un interface ou une classe abstraite ?
Si nous voulons une implémentation qui sera la même pour toutes les classes filles, il vaut mieux opter pour une classe abstraite plutôt que pour une interface. Avec une interface, nous pouvons laisser l’implémentation pour les classes qui vont implémenter l’interface. Avec une classe abstraite, nous pouvons partager l’implémentation de toutes les classes filles dans un emplacement central et éviter ainsi la duplication de code dans les classes filles.
Une interface peut hériter d’une autre interface?
Oui, il est possible qu’une interface hérite d’une autre interface, tout comme les classes peuvent hériter d’autres classes. Une classe implémentant une interface qui hérite de plusieurs interfaces doit implémenter toutes les méthodes de l’interface et de ses interfaces parent. Exemple :
interface A{} interface B : A{} class C : B { //Implémenter tous les membres de A et B. }
On peut créer une instance d’une interface?
Non, vous ne pouvez pas créer une instance d’interface, mais vous pouvez créer des objets de classe et les assignés à une variable de type interface. Exemple :
interface A{} class B : A { //Implémenter les membres de A. } A a1 = new B();
Dans le code ci-dessus « a1 » est un objet de type interface.
Une classe peut implémenter plusieurs interface?
Oui, une classe peut implémenter plusieurs interfaces et doit définir tous les membres de toutes les interfaces. Exemple :
interface A{} interface B{} interface C{} class D : A, B, C { //Implémenter tous les membres de A, B et C. }