Continuando a discussão do Como fazer para substituir Fluxos condicionais por polimorfismo:
Aproveitando esta resposta, só não consigo entender esta última parte, nomeadamente, os parâmetros indicados…
public void fazerBarulho(Animal animal) {
animal.barulho();
}
Desta maneira é pratico, tira a necessidade de verificar o tipo do objeto pelo if else, se ele é cachorro, galinha e etc…
o método fazerBarulho(Animal animal) só vai aceitar objetos do tipo Animal ou seja, toda classe que extender de Animal poderá passar, Isso te dá a certeza que o objeto tem o método barulho( )
independente do tipo que ele seja, herdou da classe abstrata animal, tem que fazer barulho.
Exemplo:
fazerBarulho(cachorro); //Au au
fazerBarulho(leao); //Rugidooo!!!
fazerBarulho(foca); //waw waw
fazerBarulho(Carro); //Vai dar erro de compilação, pois carro não é Animal
1 curtida