Olá Pessoal, tudo bom? Voltando de um longo inverno…
Em junho de 2016 escrevi um artigo sobre interfaces. Esse artigo se propõe a inserir um novo aspecto que foi inserido no tipo interface no Java 8. Confira na continuação.
Métodos com implementação, agora pode!
Se você é um desenvolvedor antes do Java 8, sabe que os métodos em uma interface não podiam possuir uma implementação. Vamos ver como era com o código abaixo:
1 2 3 4 5 |
public interface AcessoSistema { boolean possuiAcessoAdministrador(); } |
Vamos pensar em uma classe Java que implemente essa interface:
1 2 3 4 5 6 7 8 9 10 11 |
public class UsuarioAdministrador implements AcessoSistema { //Algum código aqui public boolean possuiAcessoAdministrador(){ return Credencial.getInstance().isAdministrador(); } //Algum código aqui } |
Vamos pensar em outra classe Java que implemente essa interface:
1 2 3 4 5 6 7 8 9 10 11 |
public class UsuarioGerente implements AcessoSistema { //Algum código aqui public boolean possuiAcessoAdministrador(){ return Credencial.getInstance().isAdministrador(); } //Algum código aqui } |
Notou o problema?
Todas as classes que implementavam a interface podiam possuir a mesma implementação do método. Com o advento do Java 8 foi criado os default methods. Ou seja, são implementações padrão de um método, assim se a classe que implementa a sua interface concorda com essa implementação, não é necessário reimplementar esse método.
Vamos ver como ficou essa nova característica aplicada a interface AcessoSistema:
1 2 3 4 5 6 7 |
public interface AcessoSistema { default boolean possuiAcessoAdministrador(){ return Credencial.getInstance().isAdministrador(); } } |
Se as condições abaixo forem satisfeitas é possível utilizar essa nova característica:
- Inserir a palavra reservada default na frente do método.
- Criar a implementação do método, respeitando o tipo de retorno (como em um método convencional)
Pronto!
Agora o código de uma das classes que implementam a interface ficou assim:
1 2 3 4 5 |
public class UsuarioAdministrador implements AcessoSistema { //Algum código aqui } |
finnaly{
Isso é muito interessante para reuso de código, evitando erros e removendo linhas duplicadas em seu código.
E outro aspecto muito interessante é que passamos a ter “herança múltipla” no Java, mas isso fica para uma outra hora.
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post que espero agora estar retornando ao original de 1 post toda segunda feira!
Leave a Reply