父类转为子类会出现错误的例子
时间: 2023-10-03 14:09:16 浏览: 73
JAVA 多态操作----父类与子类转换问题实例分析
假设我们有一个父类Animal和一个子类Dog,代码如下:
```java
public class Animal {
public void move() {
System.out.println("Animal is moving...");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking...");
}
}
```
现在我们创建一个Animal对象,然后将其转换为Dog对象:
```java
Animal animal = new Animal();
Dog dog = (Dog) animal;
```
这里实际上是将父类Animal转换为子类Dog,这个转换过程称为向下转型(downcasting)。但是,由于animal对象实际上并不是Dog对象,所以在运行时会抛出ClassCastException异常。
如果我们在转换前进行类型检查,可以避免这个错误:
```java
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.bark();
} else {
System.out.println("animal is not a dog.");
}
```
这里使用了instanceof关键字进行类型检查,如果animal对象是Dog的实例,则进行向下转型并调用bark()方法,否则输出“animal is not a dog.”。
阅读全文