Além da pergunta do título, o que acontece se uma classe implementar duas interfaces cada uma com default method de mesmo nome, qual será chamado?
Além da pergunta do título, o que acontece se uma classe implementar duas interfaces cada uma com default method de mesmo nome, qual será chamado?
Oi Felipe
Tem uma proximidade com herança multipla. Mas como não há herança de atributos (ja que interfaces nao tem atributos, no máximo constantes estáticas), o perigo é bem menor de não se saber o que está acontecendo.
Se voce tentar implementar duas interfaces que possuem métodos default com assinatura incompatível (nome igual, parametros mesma ordem, retorno e throwable nao importa), vai dar erro de compilação
Se os dois métodos default possuírem a mesma assinatura, o erro de compilação pode ser corrigido se a classe filha sobrescrever esse método.
O Edu tem toda razão! Se for a mesma assinatura (pode ate diferenciar no throws) voce consegue fazer funcionar se reescrever o método. Mas ainda há casos onde não é possível, como se um dos métodos for default int metodo()...
e o outro default String metodo()
pois não há uma reescrita compátivel com os dois