在main方法里新建一个Dog类的上转型对象d2(new调用构造方法, Animal d2 = new ….),然后打印输出的d2的run和eat方法,观察java的多态 (2)将d2 强制转换为Dog类型,并使用关键字instanceof判断d2是否是Dog类型,如果是打印输出d2的种类值。
时间: 2024-02-23 12:00:09 浏览: 125
好的,我明白了。这个问题我们已经回答过了,以下是完整的代码示例:
```
class Animal {
public void run() {
System.out.println("Animal is running.");
}
public void eat() {
System.out.println("Animal is eating.");
}
}
class Dog extends Animal {
private String type;
public Dog(String type) {
this.type = type;
}
public String getType() {
return this.type;
}
@Override
public void run() {
System.out.println("Dog is running.");
}
@Override
public void eat() {
System.out.println("Dog is eating.");
}
}
public class Main {
public static void main(String[] args) {
Animal d2 = new Dog("Golden Retriever");
d2.run();
d2.eat();
if (d2 instanceof Dog) {
Dog dog = (Dog) d2;
System.out.println("d2的种类值是" + dog.getType());
}
}
}
```
运行这段代码,输出如下:
```
Dog is running.
Dog is eating.
d2的种类值是Golden Retriever
```
我们首先创建了一个Animal类型的对象d2,并使用new关键字创建了一个Dog类型的实例,并将其赋值给d2。这就是上转型。然后,我们通过d2调用了Animal类中的run()和eat()方法。由于Dog类重写了这些方法,实际上调用的是Dog类中的方法。这就是Java中的多态性。
接下来,我们使用instanceof关键字判断d2对象是否是Dog类型。如果是,我们就将其强制转换为Dog类型,并调用Dog类中的getType()方法获取狗的种类,并打印输出。
阅读全文