pessoal, vcs poderiam me explicar o resultado dessa questão…porque que o metodo executado no construtor da classe pai…executa o metodo da classe filha…??
Porque métodos sobrescritos(override) são resolvidos em tempo de execução.
O que vale é o tipo do objeto e não a sua referência nessa hora.
Como você tem o método showDevice nas 2 classes e o objeto que está chamando este método é do tipo Mobile, então Mobile.showDevice() é o que vai ser executado.
ana , somente fazendo um comentário… metodos “sobrepostos” , seriam overloading e não overrinding…(substituído…)…
seguinte ana…isso eu até entendo…o problema…e que eu achava que quando o construtor da subclasse fosse executado…antes ele passaria para o construtor da superclasse e chamaria o metodo “showdevice()”
[quote=“Duque”]ana , somente fazendo um comentário… metodos “sobrepostos” , seriam overloading e não overrinding…(substituído…)…
[/quote]
Não foi isso que eu disse! Ou pelo menos não quis dizer, desculpa.
Não sei qual é a tradução correta para override, por isso coloquei o termo em inglês entre parênteses.
[quote=“Duque”]seguinte ana…isso eu até entendo…o problema…e que eu achava que quando o construtor da subclasse fosse executado…antes ele passaria para o construtor da superclasse e chamaria o metodo “showdevice()”
[/quote]
O construtor de uma classe sempre chama o construtor da superclasse.
Acontece que no construtor da superclasse tem uma chamada a um método que foi feito um override na subclasse, portanto é o método da subclasse que é executado.[/quote]