Quais seriam as diferenças entre você sobrescrever um método herdado da classe mãe na classe filha e utilizar o polimorfismo para executar o mesmo método? É a mesma coisa?
Por exemplo:
public class Animal {
public void emitirSom() {
System.out.println("Som do animal");
}
}
public class Cachorro extends Animal {
@Override
public void emitirSom() {
System.out.println("Au au");
}
}
public class Teste {
public static void main(String args[] args) {
Cachorro cachorro = new Cachorro();
Animal cachorro2 = new Cachorro();
}
cachorro.emitirSom();
cachorro2.emitirSom();
}
Dado esse cenário eles utilizariam o mesmo método e teriam o mesmo efeito. Você poderia utilizar tanto a referência do tipo Cachorro
quanto a referência do tipo Animal
. Os dois teriam o mesmo efeito certo?
Mas supondo que eu tenha vários outros animais e gostaria de reutilizar o método emitirSom()
. Aí sim nesse cenário, faz sentido criar uma classe que gerencia a emissão de sons de animais (SonsDeAnimais
por exemplo) e um método que recebe uma referência do tipo mais genérico emitirSom(Animal animal)
e dentro dele chamar o método que em tempo e execução aciona a implementação correta.
Eu queria só fazer um double check de conhecimento aqui pra ver se realmente entendi isso.