向上转型:父类引用变量指向子类对象。
向下转型:将向上转型的变量再转回本类型。不能直接对父类对象进行向下转型。
abstract class Animal{
public abstract void eat();
}
abstact class Cat extends Animal{
public void eat(){
System.out.println("吃鱼");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class Test{
Animal a = new Cat(); //向上转型
a.eat();
Cat c = (Cat)a; //向下转型
c.catchMouse();
public static void function(Animal a) {
a.eat();
if(a instanceof Cat) {
Cat c = (Cat)a;
c.catchMouse();
}else if (a instanceof Dog) {
Dog d = (Dog)a;
d.kanJia();
}
}
}