设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。 · 编写抽象类Animal Animal抽象类有两个抽象方法cry()和getAnimalName(),即要求各种具体的动物给出自己的叫声和种类名称。 · 编写模拟器类Simulator 该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。 · 编写Animal类的子类:Dog和Cat类 图5.18是Simulator、Animal、Dog、Cat的UML图。 · 编写主类Application(用户程序) 在主类Application的main方法中至少包含如下代码: Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat());
时间: 2024-02-09 22:08:04 浏览: 91
好的,这是您的问题:“设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。· 编写抽象类Animal Animal抽象类有两个抽象方法cry()和getAnimalName(),即要求各种具体的动物给出自己的叫声和种类名称。· 编写模拟器类Simulator 该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。· 编写Animal类的子类:Dog和Cat类 图5.18是Simulator、Animal、Dog、Cat的UML图。· 编写主类Application(用户程序) 在主类Application的main方法中至少包含如下代码:Simulator simulator = new Simulator();simulator.playSound(new Dog());simulator.playSound(new Cat());”
以下是代码实现:
```
// Animal.java
public abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
// Dog.java
public class Dog extends Animal {
@Override
public void cry() {
System.out.println("汪汪汪!");
}
@Override
public String getAnimalName() {
return "狗";
}
}
// Cat.java
public class Cat extends Animal {
@Override
public void cry() {
System.out.println("喵喵喵!");
}
@Override
public String getAnimalName() {
return "猫";
}
}
// Simulator.java
public class Simulator {
public void playSound(Animal animal) {
animal.cry();
System.out.println("这是一只" + animal.getAnimalName() + "。");
}
}
// Application.java
public class Application {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
```
运行结果:
```
汪汪汪!
这是一只狗。
喵喵喵!
这是一只猫。
```
希望这个回答能够满足您的要求。
阅读全文