Поделиться через


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#)

struct (справочник по C#)

Интерфейсы (Руководство по программированию в C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#