对象的向上转型是自动的
class Animal{
public void eat(){
System.out.println("动物需要吃食物。");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗要吃肉");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃老鼠");
}
}
public class JavaDemo {
public static void main(String args[]){
Animal dog = new Dog();
dog.eat();
walk(new Dog());
walk(new Cat());
}
public static void walk(Animal animal){
System.out.println("动物都会走路");
}
}
在以上代码中定义了Animal 、Dog、以及Cat三个类,Dog和Cat类继承了Animal类,并覆写了父类中的eat()方法
Animal dog = new Dog(); 语句中就实现了对象的向上转型,在理解代码的时候,只需要看new关键字后面的就可以了,把Animal当成是一种类型。
比如在现实生活中,我们可以说狗是动物、猫是动物,但是我们不能说动物是狗。
对象向上转型的相当于把类型的范围扩大了,这样做的好处是可以实现参数的统一化管理。在上面的主类当中定义的方法walk(Animal animal)中可以传入的参数为Dog、Cat的实例化对象,这样可以使程序更加的简洁。