举个例子:
abstract class Animal {
abstract void eat();
}
class Dog extends Animal {
public void eat() {
System.out.println("骨头");
}
public void lookHome() {
System.out.println("看家");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
public void catchMouse() {
System.out.println("抓老鼠");
}
}
public class DuoTaiDemo {
public static void main(String[] args) {
method(new Cat());//上面代码就不废话了,猫和狗都继承了动物,自己有自己的方法。
}
public static void method(Animal a) { //这边就是向上转型。不管你创建任何子类对象 就可以调用这个方法。而如果你的形参是猫或者狗,代码会很冗长复杂!!
所以向上转型的好处1.提高功能的扩展性;2.可以使复杂问题简单化。
a.eat();
if (a instanceof Dog) {
Dog d = (Dog) a;
d.lookHome();
} else if (a instanceof Cat) {
Cat c = (Cat) a;
c.catchMouse();
}
}
} 作者: 夏天 时间: 2012-9-27 09:42