Une interface définit un contrat qui sera mis en œuvre par une classe ou une structure. Il peut contenir des méthodes, des propriétés, des événements et des indexeurs. Une interface est similaire à une classe, sauf qu'elle ne contient aucune donnée et spécifie uniquement le comportement qu'elle peut effectuer (ou, plus précisément, le comportement que peut effectuer la classe qui l'implémente).
Une classe peut implémenter un comportement ou plusieurs interfaces. Pour implémenter un membre d'interface, une classe doit avoir des membres publics avec la même définition de méthode que les membres de l'interface, c'est-à-dire le même nom et la même signature.
Par exemple, IComparer est une interface définie dans l'espace de noms System.Collections qui définit un contrat pour les méthodes permettant de comparer deux objets. La classe Car implémente l'interface IComparer
public interface IDriver{ void Drive(); } public class Car : IDriver{ public string Name { get; set; } public int Speed { get; set; } public void Drive(){ Console.WriteLine($"{Name}: {Speed}"); } }
Tous les membres de l'interface sont implicitement abstraits et n'ont aucun détail d'implémentation. Tous les membres de l'interface sont publics. Les modificateurs d'accès ne peuvent pas être utilisés avec les membres de l'interface. Une classe qui implémente une interface doit fournir des méthodes publiques qui implémentent l'interface.
Les interfaces peuvent étendre d'autres interfaces, par exemple -
public interface IPerformer { void Perform(); } public interface ISinger : IPerformer{ void Sing(); }
Les interfaces vous permettent d'inclure des comportements provenant de plusieurs sources dans une seule classe. Étant donné que C# n'autorise pas l'héritage multiple comme C++, les interfaces sont un moyen d'implémenter l'héritage multiple en C#.
Un inconvénient des interfaces est qu'elles sont moins flexibles que les classes lorsque vous les utilisez pour exposer une API. Lorsque vous modifiez le contrat d'une interface, toutes les classes qui implémentent l'interface sont interrompues et doivent être mises à jour pour implémenter l'interface.
Démonstration en temps réel
using System; class Program{ static void Main(){ var carOne = new Car { Name = "Honda", Speed = 100 }; var carTwo = new Car { Name = "Toyota", Speed = 70 }; carOne.Drive(); carTwo.Drive(); } } public interface IDriver{ void Drive(); } public class Car : IDriver{ public string Name { get; set; } public int Speed { get; set; } public void Drive(){ Console.WriteLine($"{Name}: {Speed}"); } }
Honda: 100 Toyota: 70
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!