interface (Referencia de C#)

Una interfaz contiene solo las firmas de métodos, propiedades, eventos o indizadores. Una clase o struct que implementa la interfaz debe implementar los miembros de la interfaz que se especifican en la definición de interfaz. En el ejemplo siguiente, la clase ImplementationClass debe implementar un método denominado SampleMethod que no tenga ningún parámetro y devuelva void.

Para obtener más información, vea Interfaces (Guía de programación de C#).

Ejemplo

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation: 
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

Una interfaz puede ser miembro de un espacio de nombres o de una clase, y puede contener firmas de los siguientes miembros:

Una interfaz puede heredar de una o varias interfaces base.

Cuando una lista de tipos base contiene una clase base e interfaces, la clase base debe aparecer primero en la lista.

Una clase que implementa una interfaz puede implementar explícitamente miembros de esa interfaz. A un miembro implementado explícitamente sólo se puede tener acceso mediante una instancia de la interfaz, y no mediante una instancia de la clase.

Para obtener información más detallada y ejemplos de código de la implementación de interfaces explícita, vea Implementación explícita de interfaz (Guía de programación de C#).

En el siguiente ejemplo, se muestra la implementación de una interfaz. En este ejemplo, la interfaz contiene la declaración de propiedad y la clase contiene la implementación. Cualquier instancia de una clase que implementa IPoint tiene x y y propiedades de entero.

interface IPoint
{
   // Property signatures:
   int x
   {
      get;
      set;
   }

   int y
   {
      get;
      set;
   }
}

class Point : IPoint
{
   // Fields:
   private int _x;
   private int _y;

   // Constructor:
   public Point(int x, int y)
   {
      _x = x;
      _y = y;
   }

   // Property implementation:
   public int x
   {
      get
      {
         return _x;
      }

      set
      {
         _x = value;
      }
   }

   public int y
   {
      get
      {
         return _y;
      }
      set
      {
         _y = value;
      }
   }
}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.x, p.y);
   }

   static void Main()
   {
      Point p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

Especificación del lenguaje C#

Para obtener más información, vea la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también

Referencia

Palabras clave de C#

Tipos de referencia (Referencia de C#)

Interfaces (Guía de programación de C#)

Utilizar propiedades (Guía de programación de C#)

Utilizar indizadores (Guía de programación de C#)

class (Referencia de C#)

struct (Referencia de C#)

Interfaces (Guía de programación de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#