向上转型和向下转型
时间: 2023-09-03 22:12:49 浏览: 37
向上转型和向下转型是Java中的两种类型转换方式。
向上转型是将一个子类对象转换为父类对象,这种转换是自动进行的,不需要显示地进行转换操作,因为子类对象拥有父类对象的所有属性和方法。例如:
```
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
Dog dog = new Dog();
Animal animal = dog; // 向上转型,将Dog类的对象赋值给Animal类的变量
animal.eat(); // 可以调用Animal类中的eat()方法
```
向下转型是将一个父类对象转换为子类对象,这种转换需要强制类型转换,因为父类对象并不拥有子类对象的所有属性和方法。如果进行错误的向下转型,可能会导致运行时异常。例如:
```
Animal animal = new Dog();
Dog dog = (Dog) animal; // 向下转型,需要强制类型转换
// 如果向下转型错误,可能会抛出ClassCastException异常
Animal animal2 = new Animal();
Dog dog2 = (Dog) animal2; // 抛出ClassCastException异常
```