在main方法里新建一个Dog类的上转型对象d2、然后打印输出d2的run和eat方法、将d2强制转化dog类型、并使用关键字instanceof判断d2是否为dog类型、如果是打印输出d2德种类值
时间: 2024-02-05 12:04:55 浏览: 122
好,你的问题是如何在Java的main方法里新建一个Dog类的上转型对象d2、然后打印输出d2的run和eat方法、将d2强制转化dog类型、并使用关键字instanceof判断d2是否为dog类型、如果是打印输出d2的品种值。
以下是代码实现:
```java
public class Main {
public static void main(String[] args) {
// 新建一个Dog类的上转型对象d2
Animal d2 = new Dog();
// 打印输出d2的run和eat方法
d2.run();
d2.eat();
// 将d2强制转化dog类型,并使用关键字instanceof判断d2是否为dog类型
if (d2 instanceof Dog) {
// 如果是打印输出d2的品种值
Dog dog = (Dog) d2;
System.out.println("d2的品种值是:" + dog.getBreed());
}
}
}
class Animal {
public void run() {
System.out.println("动物在奔跑");
}
public void eat() {
System.out.println("动物在吃东西");
}
}
class Dog extends Animal {
private String breed = "柯基犬";
public String getBreed() {
return breed;
}
@Override
public void run() {
System.out.println("狗在奔跑");
}
@Override
public void eat() {
System.out.println("狗在吃骨头");
}
}
```
运行以上代码,输出结果如下:
```
狗在奔跑
狗在吃骨头
d2的品种值是:柯基犬
```
解释一下代码:
1. 首先在main方法里新建一个Dog类的上转型对象d2,这里使用了多态的特性,即子类对象可以赋值给父类引用,这里的Animal是Dog的父类。
2. 然后打印输出d2的run和eat方法,这里使用了多态的特性,即调用父类的方法时,会自动调用子类的重写方法。
3. 将d2强制转化dog类型,并使用关键字instanceof判断d2是否为dog类型。这里先判断d2是否为Dog类型,如果是,就将d2强制转化为Dog类型,然后输出d2的品种值。这里使用了强制类型转换和类型判断的知识。
阅读全文