Um guia para iniciantes no uso de interfaces em Java
Uma interface é um tipo de referência usado para fazer cumprir um contrato com uma classe. Um contrato refere-se a uma obrigação de implementar os métodos que uma interface define.
As interfaces fornecem uma abstração entre os métodos que definem e como o usuário os implementa em uma classe. Um caso de uso prático disso é em APIs (interfaces de programação de aplicativos).
APIs permitem que seu programa se comunique com outros programas sem saber como eles são implementados. Isso é importante tanto por razões de propriedade (para a empresa que detém os direitos) quanto para facilitar o desenvolvimento de sua parte.
Vamos dar uma olhada em como usar interfaces Java.
Definindo Interfaces
Para declarar uma interface, coloque a palavra-chave interface antes do nome da interface.
interface Car{
// constant declarations, if any
int tyres = 4;
// method signatures
int lights (int brightness);
int turn (int tyres, String direction){
// some code
}
}
No cabeçalho da interface, você também pode incluir seu nível de visibilidade antes da interface de palavra-chave.
Os valores em uma interface são constantes. Esses valores são, por padrão , públicos, estáticos e finais . Portanto, não há necessidade de usar essas palavras-chave ao declarar valores no corpo de uma interface.
O corpo de uma interface também pode ter métodos padrão, abstratos e estáticos . Esses métodos são públicos por padrão, portanto, não há necessidade de indicar esses modificadores de acesso ao declará-los.
Os métodos abstratos são declarados deixando de fora as chaves do corpo do método. Veja a linha 7 no código acima. Os métodos estáticos são declarados procedendo-se ao nome do método com a palavra-chave estático e os métodos padrão são declarados com o modificador padrão .
Agora seria um bom momento para mencionar que você deve usar métodos declarados em uma interface em quaisquer classes que a implementem. Não fazer isso fará com que o compilador "cumpra o contrato", fornecendo um erro de compilação.
Esta propriedade particular das interfaces pode ter algumas desvantagens. Considere um caso em que um provedor de interface de programação de aplicativo (API) decide adicionar mais métodos às suas interfaces, mas vários aplicativos são baseados nas interfaces antigas. Os desenvolvedores que usam as interfaces antigas em seus programas teriam que reescrever seu código, o que não é prático.
Portanto, é aí que entram os métodos padrão . Eles permitem que os provedores de API adicionem mais métodos às suas interfaces, garantindo a compatibilidade binária com versões mais antigas da interface.
default int getDirection ( String coordinates){
// write some code to give a default implementation
}
O método acima mostra como um método padrão chamado getDirection é declarado. Observe que você deve incluir uma implementação de um método padrão ao escrevê-lo.
Usando interfaces
Agora que definimos interfaces em Java, podemos passar para a forma como você pode implementá-las. Você descobrirá isso na seção abaixo.
Implementando interfaces
Para implementar uma interface, use a palavra-chave implements usando esta sintaxe:
class A implements interface P{
}
Lembre-se de que você deve usar todos os métodos de interface da classe. Você pode ignorar esta regra apenas se um dos métodos for definido como padrão na interface.
Se quiser que sua classe implemente várias interfaces, você pode separá-las usando vírgulas na declaração de cabeçalho.
Exemplo:
class A implements interface P, Q, R{
}
Se a classe que está implementando a interface for uma subclasse, use a sintaxe abaixo:
class A extends B implements C, D{
}
As interfaces permitem várias heranças em Java. Normalmente, uma classe pode estender apenas uma classe (herança única). As interfaces são a única maneira pela qual o Java pode realizar várias heranças.
As interfaces também podem estender outras interfaces, assim como uma classe pode estender outra classe. A interface filha herda os métodos da interface que estende.
Veja o exemplo abaixo:
interface A extends B{
}
Além de usar métodos padrão para modificar uma interface sem exigir que os desenvolvedores modifiquem seus programas atuais, você também pode estender as interfaces existentes.
Agora você tem algum conhecimento básico sobre interfaces Java
As interfaces em Java demonstram abstração, um dos quatro pilares da programação orientada a objetos. O polimorfismo é um desses quatro pilares. Refere-se à capacidade de um método assumir muitas formas.
Você pode implementar polimorfismo em Java por meio de sobrecarga de método ou substituição de método. O próximo item em sua lista de leitura Java deve ser como implementar essas funções.