声明一个抽象类Animal,具有吃eat和说speak两种抽象行为,具体类狗Dog和猫Cat都继承了Animal类,请编写程序声明这三个类和测试类,要求测试类中使用上转型对象来访问Dog和Cat的方法。
时间: 2024-03-06 17:48:51 浏览: 51
代码如下:
Animal类:
```java
public abstract class Animal {
public abstract void eat();
public abstract void speak();
}
```
Dog类:
```java
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
@Override
public void speak() {
System.out.println("汪汪汪");
}
}
```
Cat类:
```java
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void speak() {
System.out.println("喵喵喵");
}
}
```
测试类:
```java
public class Test {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.eat();
animal1.speak();
animal2.eat();
animal2.speak();
}
}
```
输出结果:
```
狗吃骨头
汪汪汪
猫吃鱼
喵喵喵
```
在测试类中,我们分别创建了一个Dog对象和一个Cat对象,然后将它们分别赋值给Animal类型的变量animal1和animal2。由于Dog和Cat都是Animal的子类,因此可以将它们向上转型为Animal类型。最后调用eat和speak方法时,实际上调用的是Dog和Cat类中的方法。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)