DEV Community

Paula Santana
Paula Santana

Posted on

Java Efetivo Essencial - Interface

Prefira as interfaces em vez das classes abstratas

Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.

Interfaces

As interfaces são tipos abstratos, que utilizam a palavra reservada interface. Utilizadas para criar comportamentos que uma classe pode implementar. Antes apenas criávamos as assinaturas dos métodos nas interfaces, após o Java 8 houveram mudanças, como a implementação de métodos e atributos.
Interfaces permitem trabalharmos com polimorfismo no Java. Por regra uma classe pode implementar várias interfaces, caso o método não tenha implementação na interface é necessário fazer a implementação na classe que implementou a interface.

Classes Abstratas

É um tipo de classe no Java, no qual não será possível criar uma instância direta da mesma. Utilizamos a palavra reservada abstract para criarmos esse tipo de classe.
Tem o propósito apenas de criarmos uma estrutura de classe para que ela seja super classe de outras classes através herança.
Assim como regra de herança no Java, uma classe consegue apenas ter uma única super classe.

Vantagens

Existe uma grande vantagem em trabalharmos com interface, pois ao adicionar novas interfaces a uma classe já existente não impactamos no funcionamento e estrutura existentes.
Mas não acontece o mesmo quando tentamos adicionar uma classe abstrata nova em uma estrutura de classes existente.
Como uma classe pode implementar várias interfaces, mas não pode ter mais que uma super classe, trabalhar com interfaces acaba sendo mais fácil e maleável.

Misture

Antes do Java 8 não havia implementações de métodos, o que sugeria o uso de interfaces com classes abstratas para que fosse possível utilizar o mesmo dos dois mundos. Ainda assim o que me intrigou no livro é que utilizando de exemplos do Java manteve-se essa abordagem para implementação de métodos padrões, utilizando classes abstradas.
Como por exemplo a classe AbstractMapEntry que implementa a interface Map.Entry.

Resumo do Resumo

Trabalhar com interfaces é garantir flexibilidade no design do seu código.
Ainda sim é a melhor forma de trabalharmos com tipagem múltipla.
E se desejar implementar modelos prontos de implementação, utilize os recursos "novos" ( nem tão novos assim) que possibilitam implementação diretamente na interface.

Top comments (0)