Una interfaz contiene sólo las firmas de métodos, delegados o eventos. La implementación de los métodos se hace en la clase que implementa la interfaz, como se muestra en el ejemplo siguiente:
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. Sólo se puede tener acceso a un miembro explícitamente implementado mediante una instancia de la interfaz, y no mediante una instancia de clase, por ejemplo:
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 IPoint contiene la declaración de propiedades, la cual es responsable de establecer y obtener los valores de los campos. La clase Point contiene la implementación de las propiedades.
// keyword_interface_2.cs
// Interface implementation
using System;
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);
}
}
Resultados
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
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#)
Conceptos
Guía de programación de C#
Otros recursos
Referencia de C#