Share via


interface (Referencia de C#)

Una interfaz contiene solo las signaturas de métodos, propiedades, eventos o indizadores. Una clase o struct que implemente 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 tiene ningún parámetro y devuelve void.

Para obtener más información y ejemplos, 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 signaturas de los siguientes miembros:

Una interfaz puede heredar de una o varias interfaces base.

Cuando una lista de tipos base contiene una clase e interfaces base, 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 solo 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 de interfaz explícita (Guía de programación de C#).

En el ejemplo siguiente 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 implemente IPoint tiene las propiedades de entero x e y.

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, consulte 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#