Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Default Methods é uma gambiarra para Herança Múltipla?

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?

3 respostas
solução

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