Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Interface C#

Interface C#

Dans ce tutoriel, nous allons découvrir l'interface C# à l'aide d'exemples.

En C#, une interface est similaire à une classe abstraite. Cependant, contrairement aux classes abstraites, toutes les méthodes d'une interface sont entièrement abstraites (méthode sans corps).

Nous utilisons le interface mot-clé pour créer une interface. Par exemple,

interface IPolygon {

  // method without body
  void calculateArea();
}

Ici,

Implémentation d'une interface

On ne peut pas créer les objets d'une interface. Pour utiliser une interface, d'autres classes doivent l'implémenter. Identique à l'héritage C#, nous utilisons : symbole pour implémenter une interface. Par exemple,

using System;
namespace CsharpInterface {

  interface IPolygon {
    // method without body
    void calculateArea(int l, int b);

  }

  class Rectangle : IPolygon {

    // implementation of methods inside interface
    public void calculateArea(int l, int b) {

      int area = l * b;
      Console.WriteLine("Area of Rectangle: " + area);
    }
  }

  class Program {
    static void Main (string [] args) {

      Rectangle r1 = new Rectangle();
    
      r1.calculateArea(100, 200);

    }
  }
}

Sortie

Area of Rectangle: 20000

Dans l'exemple ci-dessus, nous avons créé une interface nommée IPolygon . L'interface contient une méthode calculateArea(int a, int b) sans implémentation.

Ici, le Rectangle la classe implémente IPolygon . Et, fournit l'implémentation du calculateArea(int a, int b) méthode.

Remarque :Nous devons fournir l'implémentation de toutes les méthodes d'interface à l'intérieur de la classe qui l'implémente.

Implémentation de plusieurs interfaces

Contrairement à l'héritage, une classe peut implémenter plusieurs interfaces. Par exemple,

using System;
namespace CsharpInterface {

  interface IPolygon {
    // method without body
    void calculateArea(int a, int b);

  }

  interface IColor {

    void getColor();
  }
   
  // implements two interface
  class Rectangle : IPolygon, IColor {

    // implementation of IPolygon interface
    public void calculateArea(int a, int b) {

      int area = a * b;
      Console.WriteLine("Area of Rectangle: " + area);
    }

    // implementation of IColor interface
    public void getColor() {

      Console.WriteLine("Red Rectangle");
            
    }
  }

  class Program {
    static void Main (string [] args) {

      Rectangle r1 = new Rectangle();
    
      r1.calculateArea(100, 200);
      r1.getColor();
    }
  }
}

Sortie

Area of Rectangle: 20000
Red Rectangle

Dans l'exemple ci-dessus, nous avons deux interfaces, IPolygon et ICouleur .

class Rectangle : IPolygon, IColor {
  …
}

Nous avons implémenté les deux interfaces dans le Rectangle classe séparée par , .

Maintenant, Rectangle doit implémenter la méthode des deux interfaces.

Utiliser la variable de référence d'une interface

On peut utiliser la variable de référence d'une interface. Par exemple,

using System;
namespace CsharpInterface {

  interface IPolygon {
    // method without body
    void calculateArea(int l, int b);

  }

  class Rectangle : IPolygon {

    // implementation of methods inside interface
    public void calculateArea(int l, int b) {

      int area = l * b;
      Console.WriteLine("Area of Rectangle: " + area);
    }
  }

  class Program {
    static void Main (string [] args) {
       
      // using reference variable of interface
      IPolygon r1 = new Rectangle();
    
      r1.calculateArea(100, 200);
    }
  }
}

Sortie

Area of Rectangle: 20000

Dans l'exemple ci-dessus, nous avons créé une interface nommée IPolygon . L'interface contient une méthode calculateArea(int l, int b) sans implémentation.

IPolygon r1 = new Rectangle();

Remarquez, nous avons utilisé la variable de référence de l'interface IPolygon . Il pointe vers la classe Rectangle qui l'implémente.

Bien que nous ne puissions pas créer d'objets d'une interface, nous pouvons toujours utiliser la variable de référence de l'interface qui pointe vers sa classe implémentée.

Exemple pratique d'interface

Voyons un exemple plus pratique d'interface C#.

using System;
namespace CsharpInterface {

  interface IPolygon {
    // method without body
    void calculateArea();

  }   
  // implements interface
  class Rectangle : IPolygon {

    // implementation of IPolygon interface
    public void calculateArea() {
      
      int l = 30;
      int b = 90;
      int area = l * b;
      Console.WriteLine("Area of Rectangle: " + area);
    }
  }

  class Square : IPolygon {

    // implementation of IPolygon interface
    public void calculateArea() {
      
      int l = 30;
      int area = l * l;
      Console.WriteLine("Area of Square: " + area);
    }
  }

  class Program {
    static void Main (string [] args) {

      Rectangle r1 = new Rectangle();  
      r1.calculateArea();

      Square s1 = new Square();  
      s1.calculateArea();
    }
  }
}

Sortie

Area of Rectangle: 2700
Area of Square: 900

Dans le programme ci-dessus, nous avons créé une interface nommée IPolygon . Il a une méthode abstraite calculateArea() .

Nous avons deux classes Carré et Rectangle qui implémentent IPolygon interface.

La règle de calcul de la surface est différente pour chaque polygone. Par conséquent, calculateArea() est inclus sans implémentation.

Toute classe qui implémente IPolygon doit fournir une implémentation de calculateArea() . Par conséquent, implémentation de la méthode dans la classe Rectangle est indépendant de la méthode dans la classe Square .

Avantages de l'interface C#

Maintenant que nous savons ce que sont les interfaces, découvrons pourquoi les interfaces sont utilisées en C#.

  • Semblables aux classes abstraites, les interfaces nous aident à réaliser l'abstraction en C# .

    Ici, la méthode calculateArea() à l'intérieur de l'interface, n'a pas de corps. Ainsi, il masque les détails d'implémentation de la méthode.
  • Les interfaces fournissent des spécifications qu'une classe (qui l'implémente) doit suivre.

    Dans notre exemple précédent, nous avons utilisé calculateArea() comme spécification à l'intérieur de l'interface IPolygon . C'est comme établir une règle selon laquelle nous devrions calculer la surface de chaque polygone.

    Désormais, toute classe qui implémente IPolygon l'interface doit fournir une implémentation pour calculateArea() méthode.
  • Les interfaces sont utilisées pour réaliser l'héritage multiple en C#.
  • Les interfaces fournissent un couplage lâche (n'ayant aucun ou moins d'effet sur les autres parties du code lorsque nous modifions une partie d'un code).

    Dans notre exemple précédent, si nous modifions l'implémentation de calculateArea() dans le Carré classe, il n'affecte pas le Rectangle classe.

Langue C

  1. L'interface de ligne de commande
  2. InterfaceJava
  3. Interface de collecte Java
  4. Interface Java NavigableSet
  5. Expressions Java Lambda
  6. Interface avec capteur d'allée sans fil
  7. Java-Interfaces
  8. Java 9 - Méthodes d'interface privée
  9. C# - Interfaces