饲养员在给动物喂食时,给不同的动物喂不同的 食物,而且在每次喂食时,动物都会发出欢快的 叫声。例如,给小狗喂骨头,小狗会汪汪叫;给 小猫喂食,小猫会喵喵叫。 本案例要求使用接口知识编写一个程序模拟饲养 员喂食动物的过程,案例要求如下: (1)饲养员给小狗喂骨头,小狗汪汪叫。 (2)饲养员给小猫喂小鱼,小猫喵喵叫。
编辑基本信息:
//此处加上自己的包名,例如:package Feed;
//定义Food的接口,设置食物类
interface Food{
String getName(); //返回名字
void setName(String name); //设置名字
}
//定义抽象类Animal,设置动物行为
abstract class Animal{
abstract void eat(Food food); //喂食物
abstract void shout(); //叫声
}
//喂食者
class Feeder{
void feed(Animal animal,Food food) { //传入动物类型和食物,喂食某种食物给某个动物
animal.eat(food);
animal.shout();
}
}
//骨头
class Bone implements Food{
String name; //定义名字
public void setName(String name) { //重写接口中的方法
this.name = name;
}
public String getName() {
return name;
}
}
//鱼
class Fish implements Food{
String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
//猫
class Cat extends Animal{
public void eat(Food food) {
System.out.println("给小猫喂:"+food.getName());
}
public void shout() {
System.out.println("喵喵喵...");
}
}
//狗
class Dog extends Animal{
public void eat(Food food) {
System.out.println("给小狗喂:"+food.getName());
}
public void shout() {
System.out.println("汪汪汪...");
}
}
创建对象:
//此处加上自己的包名,例如:package Feed;
import java.util.Scanner;
public class feed {
static void show() { //静态方法,用于输出提示信息
System.out.println("0:结束喂食" + "\t" + "1:喂小猫" + "\t" + "2:喂小狗");
}
public static void main(String[] args) {
String name1 = "鱼";
String name2 = "骨头";
int num;
Scanner in = new Scanner(System.in);
Feeder feeder = new Feeder();
Animal animal1 = new Cat();
Animal animal2 = new Dog();
Food food1 = new Fish();
Food food2 = new Bone();
OUT:
while(true) {
show();
System.out.print("请选择:");
num = in.nextInt();
switch(num) {
case 0:
System.out.println("结束喂食...");
break OUT;
case 1:
food1.setName(name1);
feeder.feed(animal1,food1);
break;
case 2:
food2.setName(name2);
feeder.feed(animal2,food2);
break;
}
}
}
}
根据用户输入的代号选择喂食哪一个动物,也可以完善基本信息给同一个动物喂食不同食物产生不同的情绪。