——代码举例分析(循环遍历调用它们的eat()方法)
——代码举例分析(将父类引用转换为子类引用的过程)
——代码举例分析(使用方法重写实现多态性的过程)
——代码举例分析(抽象类和抽象方法实现多态性的过程)
② 向上转型
向上转型是将子类对象赋值给父类引用的过程。当我们需要在父类引用和子类对象之间进行转换时,可以使用向上转型,以下是一个示例代码:
public class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
public class Dog extends Animal {
public void eat() {
System.out.println("Dog is eating bone");
}
public void bark() {
System.out.println("Dog is barking");
}
}
public class Zoo {
public static void main(String[] args) {
Animal a = new Dog();
a.eat();
// a.bark(); // 编译错误
Dog d = (Dog) a;
d.bark();
}
}
在上面的代码中,我们定义了Animal和Dog两个类。在Zoo类中,我们创建了一个Dog对象,并将它赋值给Animal类型的引用a。然后,我们调用a的eat()方法,由于Dog类重写了eat()方法,因此它会调用Dog类中的eat()方法,输出"Dog is eating bone"。另外,我们尝试调用a的bark()方法,由于Animal类中没有定义bark()方法,因此编译器会报错。