一、代码示例
static class Animal {
public void eatfood() {
System.out.println("动物吃东西");
}
}
static class Cat extends Animal {
public void eatfood() {
System.out.println("猫吃鱼");
}
public void catmove() {
System.out.println("猫跑动起来");
}
}
public static void main(String[] args) {
Animal animal = new Cat(); // 向上转型
animal.eatfood(); // 调用父类的eat方法,输出“猫吃鱼”
/* animal.catmove(); 编译错误,无法访问子类特有的方法 */
Cat cat = (Cat)animal; // 向下转型
cat.catmove(); // 正常调用子类的catAction方法,输出“猫跑动起来”
}
二、向上转型与向下转型的区别
1.向上转型
创建父类对象时,通过其子类来创建,如:Animal animal = new Cat(),称为向上转型(或向上造型)。创建后会调用子类中的同名方法,但不能访问子类的特有方法。
2.向下转型
创建子类对象时,通过用子类创建的父类对象来改造,如:Cat cat = (Cat)animal ,称为向下转型(或向下造型)。必须要用 用子类创建的父类对象来改造
以上