interface (Referencia de C#)interface (C# Reference)

Una interfaz contiene solo las firmas de métodos, propiedades, eventos o indizadores.An interface contains only the signatures of methods, properties, events or indexers. Una clase o struct que implemente la interfaz debe implementar los miembros de la interfaz que se especifican en la definición de interfaz.A class or struct that implements the interface must implement the members of the interface that are specified in the interface definition. En el ejemplo siguiente, la clase ImplementationClass debe implementar un método denominado SampleMethod que no tiene ningún parámetro y devuelve void.In the following example, class ImplementationClass must implement a method named SampleMethod that has no parameters and returns void.

Para obtener más información y ejemplos, vea Interfaces.For more information and examples, see Interfaces.

EjemploExample

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:An interface can be a member of a namespace or a class and can contain signatures of the following members:

Una interfaz puede heredar de una o varias interfaces base.An interface can inherit from one or more base interfaces.

Cuando una lista de tipos base contiene una clase e interfaces base, la clase base debe aparecer primero en la lista.When a base type list contains a base class and interfaces, the base class must come first in the list.

Una clase que implementa una interfaz puede implementar explícitamente miembros de esa interfaz.A class that implements an interface can explicitly implement members of that interface. 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.An explicitly implemented member cannot be accessed through a class instance, but only through an instance of the interface.

Para obtener más información detallada y ejemplos de código de la implementación de interfaces explícita, vea Implementación de interfaz explícita.For more details and code examples on explicit interface implementation, see Explicit Interface Implementation.

EjemploExample

En el ejemplo siguiente se muestra la implementación de una interfaz.The following example demonstrates interface implementation. En este ejemplo, la interfaz contiene la declaración de propiedad y la clase contiene la implementación.In this example, the interface contains the property declaration and the class contains the implementation. Cualquier instancia de una clase que implemente IPoint tiene las propiedades de entero x e y.Any instance of a class that implements IPoint has integer properties x and 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()
   {
      IPoint p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

Especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also