Java: Implementando métodos na interface com Default Methods!
Aprendi desde o início da minha carreira que uma interface em Orientação a Objetos apenas define os métodos que devem ser implementados pelas classes. Ou seja, não poderíamos implementar um método em uma interface.
Mas isso mudou e a partir do Java 8 nós podemos ter implementação "padrão" de um método na interface Java! Para isso, basta utilizarmos a palavra-chave default
na declaração do método.
É importante observar que os métodos default não foram criados com o objetivo de permitir herança multipla, e sim de permitir a evolução de interfaces sem quebrar códigos existentes. Essa recurso do Java 8 é o que possibilitou o Lambda!
Vejamos um exemplo da implementação padrão de um método em uma interface.
package br.com.dicasdejava.fundamentos;
interface InterfaceComDefaultMethod {
default String metodo() {
return "a";
}
String metodo2();
}
class Classe implements InterfaceComDefaultMethod {
public String metodo2() {
return "b";
}
}
class Main {
public static void main(String... args) {
InterfaceComDefaultMethod a = new Classe();
System.out.println(a.metodo());
System.out.println(a.metodo2());
}
}
Saída:
a
b
O arquivo Java acima exemplifica a utilização de um "default method" em Java.
Podemos observar que o método que foi implementado na interface, necessariamente utilizando a palavra-chave default
, não precisa ser implementado na Classe
que "implementa" a interface InterfaceComDefaultMethod
.
TEM que ter a palavra chave default
Para utilizarmos esse recurso do Java 8 e implementar um método na própria interface, precisamos utilizar a palavra-chave default
na declaração do método que terá a implementação padrão. Conforme o exemplo abaixo.
default String metodo() {
return "a";
}