main方法里新建一个dog类的转型对象d2、然后打印输出d2的run、eat方法、将d2强制转化为dpg类型、使用关键字instanceof 判断是否为dog类型、如果是打印输出d2的种类值
时间: 2023-11-25 13:08:51 浏览: 75
好的,我明白了。以下是代码实现:
```java
public class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.run(); // 输出:狗在奔跑
d1.eat(); // 输出:狗在吃东西
Animal d2 = new Dog(); // 将 Dog 类型转换为 Animal 类型
d2.run(); // 输出:狗在奔跑
d2.eat(); // 输出:动物在吃东西
Dog d3 = (Dog) d2; // 将 Animal 类型强制转换为 Dog 类型
if (d3 instanceof Dog) { // 使用 instanceof 判断是否为 Dog 类型
System.out.println("d2的种类值为:" + d3.getType()); // 输出:d2的种类值为:狗
}
}
}
class Animal {
public void run() {
System.out.println("动物在奔跑");
}
public void eat() {
System.out.println("动物在吃东西");
}
}
class Dog extends Animal {
public String getType() {
return "狗";
}
@Override
public void run() {
System.out.println("狗在奔跑");
}
@Override
public void eat() {
System.out.println("狗在吃东西");
}
}
```
运行结果为:
```
狗在奔跑
狗在吃东西
狗在奔跑
动物在吃东西
d2的种类值为:狗
```
注意:在将 Dog 类型转换为 Animal 类型时,使用了向上转型(也称为自动类型转换),因为 Dog 是 Animal 的子类;而在将 Animal 类型强制转换为 Dog 类型时,使用了向下转型(也称为强制类型转换),因为 Animal 不一定是 Dog 的子类,需要进行强制类型转换。同时,在进行类型转换时需要注意安全性,避免运行时出现 ClassCastException 异常。
阅读全文