interface (Справочник по C#)
Интерфейс содержит только сигнатуры методов, свойств, событий или индексаторов. Класс или структура, которые реализуют интерфейс, должны реализовать члены этого интерфейса, указанные в его определении. В следующем примере класс ImplementationClass должен реализовать метод с именем SampleMethod , который не имеет параметров и возвращает void.
Дополнительные сведения см. в разделе Интерфейсы (Руководство по программированию в C#).
Пример
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();
}
}
Интерфейс может быть членом пространства имен или класса и содержать подписи следующих членов:
Интерфейс способен наследовать от одного или нескольких базовых интерфейсов.
Если в списке базовых типов содержится базовый класс и интерфейсы, то базовый класс должен стоять в списке на первом месте.
Класс, реализующий интерфейс, может явным образом реализовывать члены этого интерфейса. Явно реализованный член можно вызвать только через экземпляр интерфейса, но не через экземпляр класса.
Дополнительные сведения и примеры кода с явной реализацией интерфейса см. в разделе Явная реализация интерфейса (Руководство по программированию в C#).
В следующем примере демонстрируется реализация интерфейса. В этом примере интерфейс содержит объявление свойства, а класс содержит реализацию. Любой экземпляр класса, реализующего IPoint, имеет целочисленные свойства x и 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
Спецификация языка C#
Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Ссылочные типы (Справочник по C#)
Интерфейсы (Руководство по программированию в C#)
Использование свойств (Руководство по программированию в C#)
Использование индексаторов (Руководство по программированию в C#)
Интерфейсы (Руководство по программированию в C#)
Основные понятия
Руководство по программированию на C#