Interfaces não possuem campos, constantes, operadores e construtores.
Interfaces permitem dois tipos de modificadores de acesso: public e internal (padrão, caso não defina nenhum).
Uma convenção comum é nomear interfaces começando com a letra I.
Observe o exemplo da classe Automóvel:
public interface IAutomovel
{
// Definindo duas properties
string Modelo { get; }
DateTime AnoDeFabricacao { get; set; }
// Definindo um método
void Ligar();
}
Uma classe pode implementar a interface acima como no exemplo a seguir:
public class Carro: IAutomovel
{
// Implementação da primeira propertie
private string _modelo;
public string Modelo
{
get
{
return this._modelo;
}
}
// Implementação da segunda propertie
public DateTime AnoDeFabricacao { get; set; }
// Implementação do método Ligar
public void Ligar()
{
Console.WriteLine("Ligando o carro.");
}
}