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)