DEV Community

Interfaces

  • Na programação orientada a objetos, é útil definir o que uma classe deve fazer, mas não como.

  • Um método abstrato define a assinatura de um método sem fornecer implementação, e a subclasse deve implementar esse método.

  • Uma interface em Java permite separar totalmente a definição do que deve ser feito da implementação de como fazê-lo.

  • Uma interface pode especificar métodos sem corpo, que devem ser implementados por classes.

  • Não há limite para o número de classes que podem implementar uma interface, e uma classe pode implementar várias interfaces.

  • Para implementar uma interface, a classe deve fornecer a implementação dos métodos descritos.

  • Classes diferentes podem implementar a mesma interface de maneiras distintas, mas compartilham o mesmo conjunto de métodos.

  • O uso de interfaces permite o polimorfismo, já que objetos de diferentes classes podem ser tratados de forma intercambiável.

  • O JDK 8 introduziu a possibilidade de interfaces definirem implementações padrão para métodos, permitindo que uma interface especifique comportamento.

  • Apesar das implementações padrão, a intenção original das interfaces de definir apenas o que permanece em grande parte inalterada.

  • O foco inicial será nas interfaces tradicionais, com a discussão sobre métodos padrão no final do capítulo.

acesso interface nome {
tipo-ret nome-método1(lista-param);
tipo-ret nome-método2(lista-param);
tipo var1 = valor;
tipo var2 = valor;
// ...
tipo-ret nome-métodoN(lista-param);
tipo varN = valor;
}

  • O acesso a uma interface pode ser public ou o acesso padrão (package-private).

  • Se nenhum modificador de acesso for incluído, a interface é acessível apenas para membros de seu pacote.

  • Quando declarada como public, a interface pode ser utilizada por qualquer código, e deve estar em um arquivo com o mesmo nome.

  • O nome da interface pode ser qualquer identificador válido.

  • Na forma tradicional de uma interface, os métodos são declarados apenas com seu tipo de retorno e assinatura, sendo essencialmente métodos abstratos.

  • Classes que implementam essa interface devem fornecer implementações para todos os seus métodos, que são implicitamente public.

  • Variáveis em uma interface não são variáveis de instância; elas são implicitamente public, final e static, e devem ser inicializadas (são constantes).

  • Exemplo de uma definição de interface:

public interface Series {
int getNext(); // retorna o próximo número da série
void reset(); // reinicia
void setStart(int x); // define o valor inicial
}

Top comments (0)