Herança Múltipla: Anfíbios, animais terrestres e marinhos
Escrito por wpjr2 em Abril 20, 2008
A herança mútlipla de classes Java não é permitida pela linguagem. A alternativa para contornar esta limitação inclui a utilização de interfaces para representar cada tipo a ser representado pela classe. No exemplo abaixo, a classe Anfibio deve possuir características de animal terrestre e de animal marinho. Porém em cada uma dos ambientes definidos pela interface (terra e mar), o anfíbio se comportará somente com as características definidas para este ambiente.
As Interfaces AnimalMarinho e AnimalTerrestre
// define as operações de um animal marinho
interface AnimalMarinho{
void nadar();
}
// define as operações de um animal terrestre
interface AnimalTerrestre{
void andar();
}
A Classe Anfíbio
class Amfibio implements AnimalMarinho, AnimalTerrestre{
void andar(){…}
void nadar(){…}
}
Criando um Anfíbio
Anfibio a = new Anfibio();
a.nadar(); // o anfíbio sabe nadar
a.andar(); // o anfíbio sabe andar
Convertendo um anfíbio em um animal marinho
AnimalMarinho am = a;
am.andar(); // o animal marinho nâo sabe andar, ERRO
am.nadar(); // o animal mainho sabe nadar, OK
De acordo com a definição da interface AnimalMarinho, é somente possível nadar, não podendo por exemplo andar sobre a água. Desta forma, o animal marinho não possui a operação andar.
Convertendo um anfíbio em animal terrestre
AnimalTerrestre at = a;
at.andar(); // o animal terrestre sabe andar, OK
at.nadar(); // o animal terrestre não sabe nadar, ERRO
De acordo com a definição da interface AnimalTerrestre, é somente possível nadar, não podendo por exemplo andar sobre a água. Desta forma, o animal marinho não possui a operação andar.