5.(在上次实验建立Dog的基础上) (1)在main方法里新建一个Dog类的上转型对象d2(new调用构造方法, Animal d2 = new ….),然后打印输出的d2的run和eat方法,观察java的多态 (2)将d2 强制转换为Dog类型,并使用关键字instanceof判断d2是否是Dog类型,如果是打印输出d2的种类值。
时间: 2024-02-23 11:59:13 浏览: 66
1._使用Hinton论文中的蒸馏算法,在CatVsDog二分类数据集上进行实验_Distillation.zip
好的,让我来回答你的问题。
对于第一个问题,你可以在main方法中新建一个Dog类的上转型对象d2,代码如下:
```
Animal d2 = new Dog("柯基");
System.out.println("d2的run方法:");
d2.run();
System.out.println("d2的eat方法:");
d2.eat();
```
这里使用了父类Animal来声明d2对象,但是实际上调用的是子类Dog的构造方法,因此d2的实际类型是Dog。在输出d2的run和eat方法时,由于这两个方法在Dog类中被重写了,因此会调用Dog类中的方法,这就体现了Java的多态性。
对于第二个问题,你可以使用强制类型转换将d2转换为Dog类型,并使用instanceof关键字判断d2是否是Dog类型。代码如下:
```
if (d2 instanceof Dog) {
Dog dog = (Dog) d2;
System.out.println("d2是" + dog.getBreed() + "犬种");
}
```
这里先使用instanceof判断d2是否是Dog类型,如果是则将d2强制转换为Dog类型,并输出它的犬种。由于d2在前面已经被初始化为Dog类型的对象,因此这里会输出d2的犬种。
阅读全文