Eu tenho um código em Java que estou praticando downcasting/upcasting, mas dá erro
Eu criei as classes
//public class Animal {
public void fazBarulho() {
System.out.println(“Faz Barulho”);
}
}
public class Cat extends Animal{
@Override
public void fazBarulho() {
System.out.println(“Miau”);
}
}
public class Dog extends Animal{
@Override
public void fazBarulho() {
System.out.println(“Au au au”);
}
}
//na main eu realizei o seguinte:
public static void main(String[] args) {
Dog dog = new Dog();
Animal animal = new Animal();
Animal animal2 = new Dog();
Animal animal3 = new Cat();
dog.fazBarulho();
animal.fazBarulho();
animal2.fazBarulho();
animal3.fazBarulho();
System.out.println("-- CASTING --");
Cat siames = (Cat) animal; //Esse comando gera o erro pois quero fazer um downcasting e ver se o resultado sai como "Fazer barulho" ou "Miau"
siames.fazBarulho()
Exception in thread “main” java.lang.ClassCastException: class entities.Animal cannot be cast to class entities.Cat (entities.Animal and entities.Cat are in unnamed module of loader ‘app’)
at application.MainExemploAnimal.main(MainExemploAnimal.java:20)