Duvida sobre Herança



[quote=“David_Js, post:1, topic:380890, full:true”]


[/quote]

Qual é a diferença entre chamar o construtor cachorro pela classe “Animal”?:

Animal caozinho = new Cachorro();
System.out.println(caozinho.peso);

E chamar pela classe cachorro?

Cachorro feio = new Cachorro();
System.out.println(feio.peso);

Isso tem alguma diferença significativa?

Mas qual é a dúvida?

Não tinha terminado de escrever, foi mal.

O conceito que você está usando é o polimorfismo. O polimorfismo é o ato de você declarar algo genérico que recebe atributos mais específicos.

Isso significa que você está pegando algo genérico (Animal) e declarando-o como um cachorro. Você poderia usar o genérico de Animal para declarar outros animas, como a classe Gato, Rato, Passarinho e etc.

Existem diferenças, é claro. Mas aí entra no âmbito de entender que tipo de diferença você quis dizer. Se você tem mais classes de animais, é melhor que use conceitos de polimorfismo, pode te ajudar. Todavia, cada caso é um caso e cada código é um código.

1 curtida

Complementando a excelente explicação da @anon43986829, eu prefiro sempre trabalhar com classes genéricas. No seu caso, imagine que todas as classes que você vai criar contendo espécies de animais possui características como peso e comida. O resto é intuitivo, dentro do conceito de polimorfismo.

1 curtida

Eu comecei a estudar polimorfismo hoje, to estudando a sobrescrita de métodos. O professor passou esse código na aula de heranças. A minha duvida estava na chamada do “construtor cachorro”. Eu quero saber se há alguma diferença entre o chamar usando a super classe animal “Animal caozinho = new Cachorro();” ou a subclasse cachorro “Cachorro feio = new Cachorro();”. Perdão, ainda to bem perdido com tantos conceitos. Acho que o ideal é sempre chamar pela super classe? ne?

Novamente, cada caso é um caso. Como eu disse, >eu< sempre opto por usar tipos genéricos, todavia para coisas simples talvez nem se precise usar.

Isso usa conceitos polimórficos

Isso não.

De toda forma, aí você estará chamando o construtor cachorro.

1 curtida

Hm, agora entendi melhor! Valeu!