Compartilhar via


interface (Referência de C#)

Uma interface contém apenas as assinaturas de métodos, Propriedades, eventos ou indexadores. Uma classe ou estrutura que implementa a interface deve implementar os membros da interface que estão especificados na definição da interface. No exemplo a seguir, a classe ImplementationClass deve implementar um método chamado SampleMethod que não tem parâmetros e retorna void.

Para obter mais informações, consulte Interfaces (C# Programming Guide).

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 membro de um namespace ou de uma classe e pode conter assinaturas dos membros a seguir:

Uma interface pode herdar de uma ou mais interfaces base.

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

Uma classe que implementa uma interface pode explicitamente implementar membros da interface. Um membro implementado explicitamente não pode ser acessado por um instância de classe, mas apenas por uma instância da interface.

Para obter mais detalhes e exemplos de código na implementação de interface explícita, consulte Implementação de Interface explícita (guia de programação de C#).

O exemplo a seguir demonstra a implementação de interface. Neste 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 de inteiro x e 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

Especificação da linguagem C#

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

Consulte também

Referência

C# Keywords

Reference Types (C# Reference)

Interfaces (C# Programming Guide)

Usando as Propriedades (guia de programação C#)

Usando os indexadores (guia de programação de C#)

classe (Referência de C#)

struct (Referência de C#)

Interfaces (C# Programming Guide)

Conceitos

C# Programming Guide

Outros recursos

C# Reference