Java 向下 转型
什么是向下转型
在面向对象编程中,向下转型(Downcasting)是指将父类类型的引用转换为子类类型的过程。这与我们常见的向上转型(子类转为父类)相反,因此被称为"向下"转型。
向下转型允许我们访问子类特有的方法和属性,这在父类引用指向子类对象时非常有用。
注意
向下转型必须确保父类引用实际上指向的是子类对象,否则会抛出ClassCastException
异常。
向下转型的语法
向下转型需要使用显式的类型转换操作符:
// 假设 Parent 是父类,Child 是子类
Parent parent = new Child(); // 首先是向上转型
Child child = (Child) parent; // 向下转型
向下转型的使用场景
1. 获取子类特有的功能
当我们通过父类引用调用方法时,只能调用父类中定义的方法。如果想调用子类特有的方法,就需要向下转型。
class Animal {
public void eat() {
System.out.println("动物正在进食");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("狗在吃骨头");
}
public void bark() {
System.out.println("汪汪汪!");
}
}
public class DowncastingExample {
public static void main(String[] args) {
Animal animal = new Dog(); // 向上转型
animal.eat(); // 输出:狗在吃骨头(多态)
// animal.bark(); // 编译错误,Animal类型没有bark方法
// 向下转型
Dog dog = (Dog) animal;
dog.bark(); // 输出:汪汪汪!
}
}
输出结果:
狗在吃骨头
汪汪汪!