Animal a = new Dog();
Dog d = (Dog) a;
a.doDogStuff();
Levando em consideração que Dog extends Animal e Animal não possui o método doDogStuff. Esse exemplo não geraria um erro?
No Livro está escrito que o código acima pode ser substituido por este
Animal a = new Dog();
((Dog)a).doDogStuff();
Fiquei na duvida, mas acho que no primeiro código ele vai procurar na classe Animal e ver que não existe o método portanto msm sendo um objeto Dog ele não vai compilar. Já no seundo ele faz o casting para Dog e dps usa o método.
Fico na espera da ajuda ae galera, abraço
OBS: Estou lendo no computador de arquivos puxados pela internet, são dois arquivos e os dois estavam iguais. Mas pode ocorrer de no livro estar diferente! Portanto, quem tiver o livro e puder verificar… seria de grande ajuda.
