Share via


interface (Referência de C#)

Uma interface contém apenas assinaturas de métodos, de propriedades, de eventos ou de indexadores. Uma classe ou estrutura que implementa a interface devem implementar membros de interface que são especificados na definição de interface. No exemplo a seguir, a classe ImplementationClass deve implementar um método chamado SampleMethod que não tem nenhum parâmetro e retorna void.

Para mais informações e exemplos, consulte Interfaces (Guia de Programação em C#).

Exemplo

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();
    }
}

Uma interface pode ser um membro de namespace ou uma classe e pode conter assinaturas dos seguintes membros:

Uma interface pode herdar de uma ou mais interfaces base.

Quando uma lista de tipo base contém uma classe base e interfaces, a classe base deve vir primeiro na lista.

Uma classe que implementa uma interface pode explicitamente implementar membros da interface. Um membro implementado explicitamente não pode ser acessado através de uma instância da classe, mas somente através de uma instância da interface.

Para obter detalhes e exemplos de código explícita na implementação da interface, consulte Implementação de interface explícita (Guia de Programação em C#).

O exemplo a seguir demonstra a implementação da interface. Nesse exemplo, a interface contém a declaração de propriedade e a classe contém a implementação. Qualquer instância de uma classe que implementa IPoint tem propriedades x e yinteiro.

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

Especificação da Linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Palavras-chave C#

Tipos de referência (Referência de C#)

Interfaces (Guia de Programação em C#)

Usando propriedades (Guia de Programação em C#)

Usando indexadores (Guia de Programação em C#)

class (Referência de C#)

struct (Referência de C#)

Interfaces (Guia de Programação em C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#