Dúvida de implementação

2 respostas
D
O seguinte código:
class Dog implements Pet {
	void beFriendly() { System.out.println("uau");}
}

interface Pet {
	void beFriendly();
}
Retorna o erro: beFriendly() in Dog cannot implement beFriendly in Pet; attempting to assign weaker access privileges; was public

Se eu acrescentar "public" no método na classe Dog, ele compila.

Sinceramente, não entendi. Por que eu não posso deixar ambos como acesso default?

2 Respostas

bronx

Bom dia, ddso!

Todo método declarado em uma interface sempre será pulic e abstract, mesmo que esses modificadores não sejam explicitamente declarados.

Ou seja, nunca haverá métodos private/protected/default dentro de uma interface.

Isto posto, fica fácil entender o erro.

Na classe Dog você declarou um método com visibilidade default, mas para cumprir o “contrato” da interface Pet esse método deve ser public, pois todos os métodos dessa (e de todas interfaces!) sempre serão públicos!!!

D

Perfeito, agora me lembrei disso! Muito obrigado pela ajuda!

Criado 1 de abril de 2013
Ultima resposta 1 de abr. de 2013
Respostas 2
Participantes 2