饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。
本案例要求使用接口知识编写一个程序模拟饲养员喂食动物的过程,案例要求如下:
(1)饲养员给小狗喂骨头,小狗汪汪叫。
(2)饲养员给小猫喂小鱼,小猫喵喵叫。
此案例八个类(其中包含一个接口)
Animal类
public abstract class Animal {
private String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//动物叫的方法
public abstract void shout();
public abstract void eat(Food food);
}
Bone类
public class Bone implements Food{
@Override
public String gerName() {
return "骨头";
}
}
Cat类.
public class Cat extends Animal{
public Cat() {
}
public Cat(String name) {
super(name);
}
@Override
public void shout() {
System.out.println("喵喵喵");
}
@Override
public void eat(Food food) {
System.out.println(getName()+"正在吃着香喷喷的"+food.gerName());
}
}
Dog类
public class Dog extends Animal{
public Dog() {
}
public Dog(String name) {
super(name);
}
@Override
public void shout() {
System.out.println("汪汪汪");
}
@Override
public void eat(Food food) {
System.out.println(getName()+"正在吃着香喷喷的"+food.gerName());
}
}
Feeder类
public class Feeder {
private String name;
public Feeder() {
}
public Feeder(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void speak(){
System.out.println("欢迎来到饲养园");
System.out.println("我是饲养员"+getName());
}
public void feeder(Animal a,Food food){
a.eat(food);
}
}
Fish类
public class Fish implements Food{
@Override
public String gerName() {
return "黄花鱼";
}
}
Food类(接口)
public interface Food {
public abstract String gerName();
}
Test类
public class Test {
public static void main(String[] args) {
Feeder f=new Feeder("小华");
f.speak();
Dog dog=new Dog("哈士奇");
dog.shout();
f.feeder(dog,new Bone());
Cat cat=new Cat("波斯猫");
cat.shout();
f.feeder(cat,new Fish());
}
}
结果展示