Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

interfaz C#

Interfaz C#

En este tutorial, aprenderemos sobre la interfaz de C# con la ayuda de ejemplos.

En C#, una interfaz es similar a una clase abstracta. Sin embargo, a diferencia de las clases abstractas, todos los métodos de una interfaz son totalmente abstractos (método sin cuerpo).

Usamos el interface palabra clave para crear una interfaz. Por ejemplo,

interface IPolygon {

  // method without body
  void calculateArea();
}

Aquí,


Implementación de una interfaz

No podemos crear objetos de una interfaz. Para usar una interfaz, otras clases deben implementarla. Igual que en la herencia de C#, usamos : símbolo para implementar una interfaz. Por ejemplo,

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);

    }
  }
}

Salida

Area of Rectangle: 20000

En el ejemplo anterior, hemos creado una interfaz llamada IPolygon . La interfaz contiene un método calculateArea(int a, int b) sin implementación.

Aquí, el Rectángulo clase implementa IPolygon . Y proporciona la implementación del calculateArea(int a, int b) método.

Nota :Debemos proporcionar la implementación de todos los métodos de interfaz dentro de la clase que lo implementa.


Implementación de múltiples interfaces

A diferencia de la herencia, una clase puede implementar múltiples interfaces. Por ejemplo,

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();
    }
  }
}

Salida

Area of Rectangle: 20000
Red Rectangle

En el ejemplo anterior, tenemos dos interfaces, IPolygon y IColor .

class Rectangle : IPolygon, IColor {
  …
}

Hemos implementado ambas interfaces en el Rectangle clase separada por , .

Ahora, Rectangle tiene que implementar el método de ambas interfaces.


Usando la variable de referencia de una interfaz

Podemos usar la variable de referencia de una interfaz. Por ejemplo,

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);
    }
  }
}

Salida

Area of Rectangle: 20000

En el ejemplo anterior, hemos creado una interfaz llamada IPolygon . La interfaz contiene un método calculateArea(int l, int b) sin implementación.

IPolygon r1 = new Rectangle();

Tenga en cuenta que hemos utilizado la variable de referencia de la interfaz IPolygon . Apunta a la clase Rectángulo que lo implementa.

Aunque no podemos crear objetos de una interfaz, aún podemos usar la variable de referencia de la interfaz que apunta a su clase implementada.


Ejemplo Práctico de Interfaz

Veamos un ejemplo más práctico de la interfaz 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();
    }
  }
}

Salida

Area of Rectangle: 2700
Area of Square: 900

En el programa anterior, hemos creado una interfaz llamada IPolygon . Tiene un método abstracto calculateArea() .

Tenemos dos clases Cuadrado y Rectángulo que implementan el IPolygon interfaz.

La regla para calcular el área es diferente para cada polígono. Por lo tanto, calculateArea() se incluye sin implementación.

Cualquier clase que implemente IPolygon debe proporcionar una implementación de calculateArea() . Por lo tanto, la implementación del método en la clase Rectangle es independiente del método en la clase Square .


Ventajas de la interfaz C#

Ahora que sabemos qué son las interfaces, aprendamos por qué se usan las interfaces en C#.


Lenguaje C

  1. La interfaz de línea de comandos
  2. Interfaz Java
  3. Marco de colecciones de Java
  4. Interfaz de colección de Java
  5. Interfaz de cola de Java
  6. Interfaz Java NavigableSet
  7. Expresiones Java Lambda
  8. Interfaz para el sensor de entrada inalámbrico
  9. Java - Interfaces
  10. Java 9 - Métodos de interfaz privada
  11. C# - Interfaces