Mais uma vez, tem coisas que a gente ja faz no automático. Estamos acostumados a só definir alguns métodos numa interface, e implementá-los numa classe qualquer, algo do tipo:
interface Testavel { public void testar(); } class Rodavel implements Testavel{ public void testar() { System.out.println("teste"); } }
Dos posts anteriores, nós sabemos que:
Mas acontece exatamente o contrário com as interfaces. Interfaces podem sim extender mais de uma interface pai, mas não podem implementar qualquer interface.
Assim, a primeira classe não-abstrata que implementar a interface Bola, deverá implementar os métodos definidos em Bola, e nas interfaces que ela estende: Inflável e Brinquedo. No mais, todas as regras referentes a sobrecarga, sobrescrita e herança continuam funcionando.
- Classes não podem estender mais de uma classe pai.
- Classes podem implementar mais de uma interface.
Mas acontece exatamente o contrário com as interfaces. Interfaces podem sim extender mais de uma interface pai, mas não podem implementar qualquer interface.
interface Inflavel { public void encher(); } interface Brinquedo{ public void jogar(); } interface Bola extends Inflavel,Brinquedo{ public void estourar(); }
Assim, a primeira classe não-abstrata que implementar a interface Bola, deverá implementar os métodos definidos em Bola, e nas interfaces que ela estende: Inflável e Brinquedo. No mais, todas as regras referentes a sobrecarga, sobrescrita e herança continuam funcionando.