一个自学的人,突然碰到不懂得地方

class Dog extends Animal

譬如dog定义了自己的方法wangwang

Animal anAnimal = new Dog();

此时不能直接调用anAnimal.wangwang方法

但是可以

if( anAnimal instanceof Dog){

Dog dog = (Dog)anAnimal;

dog.wangwang就可以调用了

Dog dog = (Dog)anAnimal;这个是什么用法?

就是对象的强转呗:

Animal anAnimal = new Dog();
这个是父类的引用指向了子类的对象,从父类的角度看是没有wangwang方法的,所以你点不出来。
但是实际上new Dog(),他得到的是Dog的对象。(Dog)anAnimal可以把父类的声明强转成子类对象,进行调用。

向下造型,向下造型本来是不安全的,但一开始,你ananimal对象就指向了dog,所以 anAnimal instanceof Dog是true,就可以向下造型

代码放上来看看。dog和Animal

谢谢各位大神,其实我看了一遍代码懂了用法,可是不怎么清楚原理。
回复3楼老师:没有源码,是百度问答里的一个答案,我直接COPY过来了。