Interfaces (guia de programação C#)

Interfaces são definidas usando o interfacepalavra- chave, sistema autônomo mostrado no exemplo a seguir:

interface IEquatable<T>
{
    bool Equals(T obj);
}

Interfaces descrevem um agrupar de funcionalidades relacionadas podem pertencer a qualquer classe or struct.Interfaces podem consistir em métodos, propriedades, eventos, os indexadores ou qualquer combinação desses tipos de quatro membro.Uma interface não pode conter campos.Membros de uma interface são automaticamente públicos.

Quando classe ou struct é considerado herdam uma interface, isso significa que classe ou struct fornece uma implementação para todos os membros definidos pela interface.A interface do próprio não oferece nenhuma funcionalidade class ou struct pode herdar da maneira que a funcionalidade da classe base pode ser herdada.No entanto, se uma classe base implementa uma interface, a classe derivada herdará essa implementação.

Classes e structs podem herdar de interfaces de uma forma parecida com a que classes herdam de uma classe base ou de uma struct, porém, há duas exceções:

  • Uma classe ou struct podem herdar mais de uma interface.

  • Quando uma classe ou struct herdam uma interface, é herdado apenas o nome dos métodos e associações, porque as interfaces não contém implementações próprias.Por exemplo:

    public class Car : IEquatable<Car>
    {
        public string Make {get; set;}
        public string Model { get; set; }
        public string Year { get; set; }
    
        // Implementation of IEquatable<T> interface
        public bool Equals(Car car)
        {
            if (this.Make == car.Make &&
                this.Model == car.Model &&
                this.Year == car.Year)
            {
                return true;
            }
            else
                return false;
        }
    }
    

Para implementar um membro de uma interface, o membro correspondente na classe deve ser público, não estático e ter o mesmo nome e associação que o membro da interface.Propriedades e índices em uma classe pode definir accessos extras para uma propriedade ou índice definidos na interface.Por exemplo, uma interface pode declarar uma propriedade com um obter acessador, mas a classe de implementação da interface possa declarar a mesma propriedade com um get e conjunto acessador.No entanto, se a propriedade ou indexador usa implementação explícita, os acessadores devem corresponder ao.

Interfaces e membros de interface são abstratos, interfaces não fornecem uma implementação padrão.Para obter mais informações, consulte Membros de classe e classes abstratas e seladas.

The IEquatable<T> interface apresenta ao usuário do objeto que o objeto pode determinar se ela é igual a outros objetos do mesmo tipo e o usuário da interface não tem saber como isso é implementado.

Interfaces podem herdar de outras interfaces.É possível que uma classe herdar várias vezes, uma interface por meio de classes base ou interfaces herda.Nesse caso, a classe pode apenas implementar a interface uma vez, se ela é declarada sistema autônomo parte da nova classe.Se a interface herdada não foi declarada sistema autônomo parte da nova classe, sua implementação é fornecida pela classe base que declarado-lo.É possível que uma classe base implementar membros de interface usando membros virtual; nesse caso, a classe que herda a interface pode alterar o comportamento da interface, substituindo membros virtual.Para obter mais informações sobre membros virtual, consulte Polimorfismo.

Visão geral de interfaces

Uma interface tem as seguintes propriedades:

  • Uma interface é como uma classe base abstrata: qualquer tipo não-abstrata herdar a interface deve implementar todos os seus membros.

  • Uma interface não pode ser instanciada diretamente.

  • Interfaces podem conter eventos, indexadores, métodos e propriedades.

  • Interfaces não contêm nenhuma implementação dos métodos.

  • Classes e estruturas podem herdar de mais de uma interface.

  • Se uma interface pode herdar de várias interfaces.

Nesta seção

Seções relacionadas

Consulte também

Conceitos

Guia de Programação C#

Referência

Herança (Guia de programação C#)