Animal a = new Cat();Cat c = (Cat)a;这就是向下转型。猫对象都是动物,自动向上转型了。因为父类对象指向子类对象,这个动物a指向的其实是猫的实例,所以它能够强制向下转型,(这时Dog d = Dog(a)会出错,因为a是动物同时是猫,而不能是狗)。多态的好处是,猫狗猪都会吃东西,那么Animal c/d/p都可以作为Animal类型的变量接收,代码复用性大大提高(这就用到了向上转型)。但是猫会抓老鼠猪不会抓老鼠,所以具体的动物又有具体的功能,这就需要向下转型,如果是猫类,那么动物a instanceof 猫就判断成功,就能向下转型Cat c = (Cat)a,这个动物就确定是猫,它就可以抓老鼠了。((((((((((((((((((讲的有点乱,结合着毕老师的例子来看(我是靠回忆给你说的,不当之处望谅解)。 |