Olá, pessoal. Eu estou estudando polimorfismo e não peguei muito bem ainda a lógica.
Olha só o que eu fiz, quero fazer os métodos únicos de Gato e Elefante rodar normal. Vou mostrar o que eu fiz para vocês entenderem.
public class Animal {
void beber() {
System.out.println("Estou bebendo");
}
}
class Gato extends Animal{
@Override
void beber(){
System.out.println("Estou bebendo com minha lingua");
}
void comer(){
System.out.println("Estou comendo ração");
}
class Elefante extends Animal{
@Override
void beber(){
System.out.println("Estou bebendo com minha tromba");
}
void comer(){
System.out.println("Estou comendo mato");
}
}
public class CriaAnimal {
void mostraAnimal(Animal a) {
if (a instanceof Animal) {
Gato gato = (Gato) a;
gato.beber();
gato.comer();
}
if (a instanceof Animal) {
Elefante elefante = (Elefante) a;
elefante.beber();
elefante.comer();
}
}
public static void main(String[] args) {
CriaAnimal ca = new CriaAnimal();
Animal elefante = new Elefante();
Animal gato = new Gato();
ca.mostraAnimal(gato);
ca.mostraAnimal(elefante);
}
}
Estou bebendo com minha lingua
Estou comendo ração
Exception in thread "main" java.lang.ClassCastException: Polimorfismo.Elefante cannot be cast to Polimorfismo.Gato
at Polimorfismo.CriaAnimal.mostraAnimal(CriaAnimal.java:15)
at Polimorfismo.CriaAnimal.main(CriaAnimal.java:28)
Java Result: 1
Aguardo respostas.