Compartir a través de


interface (Referencia de C#)

Actualización: noviembre 2007

Una interfaz contiene sólo las firmas de métodos, propiedades, eventos o indizadores. La implementación de los miembros se hace en la clase o la estructura que implementa la interfaz, como se muestra en el ejemplo siguiente:

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.

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 las secciones siguientes de Especificación del lenguaje C#.

  • 1.9 Interfaces

  • 3.4.5 Miembros de interfaz

  • 4.2.4 Tipos de interfaz

  • 10.1.2.2 Implementaciones de interfaz

  • 11.2 Interfaces de estructura

  • 13 Interfaces

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

Tipos de referencia (Referencia 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#)

Otros recursos

Referencia de C#