Interfaces (C# Programming Guide)
Interfaces descrevem um grupo de funcionalidades relacionadas que podem pertencer a qualquer classe ou struct. Você define uma interface usando o interface palavra-chave, como mostrado no exemplo a seguir.
interface IEquatable<T>
{
bool Equals(T obj);
}
Interfaces consistem de métodos, propriedades, eventos, indexadores ou qualquer combinação desses quatro tipos de membro. Uma interface não pode conter constantes, campos, operadores, construtores de instância, destruidores ou tipos. Ele não pode conter membros estáticos. Os membros de interfaces são públicos automaticamente e eles não podem incluir qualquer modificadores de acesso.
Quando uma classe ou struct implementa uma interface, a classe ou struct fornece uma implementação para todos os membros definidos pela interface. A própria interface não fornece nenhuma funcionalidade que uma class ou struct podem herdar de forma que a funcionalidade da classe base pode ser herdada. No entanto, se uma classe base implementa uma interface, a classe derivada herda essa implementação. A classe derivada é considerada para implementar a interface implicitamente.
Classes e estruturas implementam interfaces de maneira semelhante a como as classes herdam uma classe base ou struct, com duas exceções:
Class ou struct pode implementar mais de uma interface.
Quando uma classe ou struct implementa uma interface, ele recebe apenas os nomes de método e assinaturas, porque a própria interface não contém implementações de nenhum, conforme mostrado no exemplo a seguir.
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; } }
O IEquatable<T> interface apresenta ao usuário do objeto que o objeto pode determinar se é igual a outros objetos do mesmo tipo e da interface do usuário não precisa saber como isso é implementado.
Para implementar um membro da interface, o membro correspondente da classe deve ser público, non-static e ter o mesmo nome e assinatura do membro de interface. Propriedades e os indexadores de uma classe podem definir acessadores extras para uma propriedade ou indexador definida em uma interface. Por exemplo, uma interface pode declarar uma propriedade que possui um get acessador. A classe que implementa a interface pode declarar a mesma propriedade com ambos um obter e set acessador. No entanto, se a propriedade ou indexador usa a implementação explícita, os acessadores devem corresponder. Para obter mais informações sobre a implementação explícita, consulteInterface de Propriedades (guia de programação C#)
Interfaces e os membros de interface são abstratos; interfaces não fornecem uma implementação padrão. Para obter mais informações, consulte Abstract e Sealed Classes e membros da classe.
Interfaces podem herdar de outras interfaces. É possível que uma classe herdar de uma interface várias vezes, através de classes base, que ela herda ou por meio de interfaces herdadas por outras interfaces. No entanto, a classe pode implementar uma interface em apenas uma hora e somente se a interface está declarada como parte da definição da classe, como em class ClassName : InterfaceName. Se a interface é herdada porque você herdada de uma classe base que implementa a interface, sua implementação é fornecida pela classe base. Também é possível que uma classe base implementar membros de interface usando membros virtuais. Nesse caso, uma classe derivada pode alterar o comportamento da interface, substituindo membros virtuais. Para obter mais informações sobre membros virtuais, consulte polimorfismo.
Visão geral de interfaces
Uma interface tem as seguintes propriedades:
Uma interface é como uma classe base abstrata: qualquer tipo non-abstract que implementa a interface deve implementar todos os seus membros.
Uma interface não pode ser instanciada diretamente.
Interfaces podem conter propriedades, indexadores, métodos e eventos.
Interfaces não contêm implementações dos métodos.
Classes e structs pode implementar mais de uma interface.
Ele mesmo uma interface pode herdar de várias interfaces.
Nesta seção
Implementação de Interface explícita (guia de programação de C#)
Explica como criar um membro de classe é uma interface específico.How to: Membros de implementar Interface explicitamente (guia de programação de C#)
Fornece um exemplo de como implementar explicitamente membros de interfaces.How to: Implementar explicitamente os membros de duas Interfaces (guia de programação de C#)
Fornece um exemplo de como implementar explicitamente membros de interfaces com herança.
Seções relacionadas
Interface de Propriedades (guia de programação C#)
Explica como declarar propriedades em uma interface.Indexadores em Interfaces (guia de programação de C#)
Explica como declarar indexadores em uma interface.How to: Implementar a eventos de interface (guia de programação de C#)
Ilustra como uma interface possa declarar um evento.Classes e estruturas (guia de programação de C#)
Descreve como o C# usa objetos, classes e estruturas.Inheritance (C# Programming Guide)
Explica como C# implementa herança.Methods (C# Programming Guide)
Explica os conceitos de métodos nomeados no C# modelo de programação.Polymorphism (C# Programming Guide)
Descreve como as classes podem ser usadas como mais de um tipo em C#.Abstract and Sealed Classes and Class Members (C# Programming Guide)
Descreve como o abstract e sealed palavras-chave afetam a herança.Properties (C# Programming Guide)
Explica o conceito de propriedades no C#.Events (C# Programming Guide)
Explica o conceito de eventos em C#.Indexers (C# Programming Guide)
Explica o conceito de indexadores em C#.
Capítulo do livro em destaque
InterfacesemLearning C# 3.0: Master the Fundamentals of C# 3.0
Consulte também
Referência
Inheritance (C# Programming Guide)
Conceitos
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Julho de 2010 |
Distintos entre a implementação e a herança. Esclarecida o que pode e não pode ser incluído em interfaces. |
Comentários do cliente. |