设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
(1)编写抽象类AnimalAnimal抽象类有两个抽象方法 cry()和getAnimalName(),即要求各种具体的动物给出自己的叫声和种类名称。
(2)编写模拟器类Simulator该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数 animal可以调用 Animal的子类重写的 cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。
(3)编写Animal类的子类: Dog和 Cat。
UML图:
裁判测试程序样例:
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat()); } } /* 请给出每个类的定义 (注:请把class前面的public去掉再提交)*/
输入样例:
输出样例:
狗的叫声是: 汪汪~
猫的叫声是: 喵喵~
代码
class Simulator {
public void playSound(Animal animal){
System.out.printf(animal.getAnimalName());
System.out.printf("的叫声是: ");
animal.cry();
System.out.println("~");
}
}
abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
class Dog extends Animal {
public void cry (){
System.out.printf("汪汪");
}
public String getAnimalName (){
return "狗";
}
}
class Cat extends Animal {
public void cry (){
System.out.printf("喵喵");
}
public String getAnimalName (){
return "猫";
}
}