案例描述
饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。
本案例要求编写一个程序模拟饲养员喂食动物的过程,案例要求如下:
- 饲养员给小狗喂骨头,小狗汪汪叫。
- 饲养员给小猫喂小鱼,小猫喵喵叫。
运行结果:
代码如下:
创建抽象类:
/**
* 2022/3/17
*/
public abstract class Animal { // 动物类(抽象)
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
abstract void Jiao();
abstract void eat(Food food);
}
创建狗类猫类继承抽象类:
/**
* 2022/3/17
*/
public class Dog extends Animal{ // 狗类继承动物类
@Override
public void Jiao() {
System.out.println("旺旺旺!");
}
@Override
void eat(Food food) {
System.out.println(super.getName() + "正在吃着香喷喷的:" + food.gatName());
}
public Dog(String name) {
super(name);
}
}
/**
* 2022/3/17
*/
public class Cat extends Animal{ // 猫类继承动物类
@Override
public void Jiao() {
System.out.println("喵喵喵!");
}
@Override
void eat(Food food) {
System.out.println(super.getName() + "正在吃着香喷喷的:" + food.gatName());
}
public Cat(String name) {
super(name);
}
}
定义食物类接口:
/**
* 2022/3/17
*/
public interface Food { // 食物类
String gatName();
}
定义骨头类和鱼类实现食物类:
/**
* 2022/3/17
*/
public class Bone implements Food{ // 骨头类实现食物类
@Override
public String gatName() {
return "骨头";
}
}
/**
* 2022/3/17
*/
public class Fish implements Food{ // 鱼类继承动物类实现食物类
@Override
public String gatName() {
return "黄花鱼";
}
}
定义饲养员类:
/**
* 2022/3/17
*/
public class Breeder { // 饲养员类
private String name;
public Breeder(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void hy(){ // 说明
System.out.println("欢迎来到动物园!");
System.out.println("我是饲养员:" + getName());
}
public void wei(Animal a , Food food){ // 创建wei类 传入动物类与食物类
a.eat(food); // 通过动物类调用eat方法,传入食物对象
}
}
定义测试类:
/**
* 2022/3/17
*/
public class Dongwutext { // 测试类
public static void main(String[] args) {
Breeder b = new Breeder("小陈"); // 创建饲养员类对象
b.hy();
Animal cat = new Cat("大花猫"); // 通过多态创建猫类对象
cat.Jiao();
Food f1 = new Fish(); // 创建鱼类对象
b.wei(cat , f1); // 通过对象调用wei方法
Animal dog = new Dog("小黄狗"); // 创建狗类对象
dog.Jiao();
Food f = new Bone(); // 创建骨头类对象
b.wei(dog,f);
}
}