Tenho uma dúvida sobre polimorfismo...
Quando você override um método da super class, quando chamar, o método override sempre vai ser chamado primeiro, caso não exista ele pega a referência mais genérica para aplicar.
Se eu criar uma super class Animal e adicionar Dog e Cat como child classes e sobrepor o método da super class sound(), irá funcionar
public class Animal() {
public void sound() {
System.out.println("Default sound");
}
}
public class Dog() {
@Override
public void sound() {
System.out.println("Au au!");
}
}
Animal dog = new Dog();
dog.sound();
Só que nesse caso acima, a minha referência genérica possuí o método e eu posso colocar o tipo de refêrencia como Animal. Se eu criar um método novo na class dog que não exista na super class, apontaria um erro tentar chamar o método. Gostaria de saber o por que e também quando usar referências genéricas para chamar uma class.