173 多态转型内存图解
向上转型 | 从子到父。父类引用指向子类对象 |
向下转型 | 从父到子。父类引用转为子类对象。Zi z=(Zi)f;这样一来,就可以调用子类的独有方法了 |
-------------------------------------------------------------------------------
package itheima05E173;
public class Animal {
public void eat(){
System.out.println("动物吃东西");
}
}
-------------------------------------------------------------------------------
package itheima05E173;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame(){
System.out.println("小猫捉迷藏");
}
}
-------------------------------------------------------------------------------
package itheima05E173;
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
-------------------------------------------------------------------------------
package itheima05E173;
public class AnimalDemo {
public static void main(String[] args) {
//向上转型
Animal a = new Cat();
a.eat();
//向下转型
Cat c = (Cat)a;
c.eat();
c.playGame();
//向上转型
a = new Dog();
a.eat();
//向下转型
//报错classCastException,类型转换异常
//Cat cc = (Cat)a;
//cc.eat();
//cc.playGame();
}
}