任务4-2 饲养员喂养动物

目录

题目

分析

代码

1.Animal.java

2.Dog.java

3.Cat.java

4.Food.java

5.Bone.java

6.Fish.java

7.Feeder.java

8.AnimalTest.java

运行结果


题目

饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。

本案例要求编写一个程序模拟饲养员喂食动物的过程,案例要求如下:

  1. 饲养员给小狗喂骨头,小狗汪汪叫。
  2. 饲养员给小猫喂小鱼,小猫喵喵叫。

分析

案例涉及的对象有饲养员,各种不同动物以及各种不同的食物。这样很容易抽象出 3 个类:饲养员 Feeder、动物 Animal 和食物 Food。动物园喂养了猫类和狗类动物,则Cat 类、 Dog 类是 Animal 类的子类 。同样,由 Food 类可以派生出其子类:骨头 Bone 类、鱼 Fish 类。由于鱼既是一种食物,实际上也是一种动物。所以, 将Food 定义为接口,让 Fish 和 Bone 去实现接口。

代码

1.Animal.java

package animal;

public abstract class Animal {
	private String name;
	
	public Animal(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	abstract void shout();
	abstract void  eat(Food food);
}

2.Dog.java

package animal;

public class Dog extends Animal {

	public Dog(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	@Override
	void shout() {
		// TODO Auto-generated method stub
		System.out.println("汪汪。。。。");
	}

	@Override
	void eat(Food food) {
		// TODO Auto-generated method stub
		System.out.println(getName()+"正在吃香喷喷的"+food.getName());
	}
}

3.Cat.java

package animal;

public class Cat extends Animal {

	public Cat(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	void shout() {
		// TODO Auto-generated method stub
		System.out.println("喵喵。。。");
	}

	@Override
	void eat(Food food) {
		// TODO Auto-generated method stub
		System.out.println(getName()+"正在吃香喷喷的"+food.getName());
	}
}

4.Food.java

package animal;

public interface Food {
	String getName();
}

5.Bone.java

package animal;

public class Bone implements Food {

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return "肉骨头";
	}
}

6.Fish.java

package animal;

public class Fish extends Animal implements Food {

	public Fish(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	@Override
	void shout() {
		// TODO Auto-generated method stub
	}

	@Override
	void eat(Food food) {
		// TODO Auto-generated method stub
	}
}

7.Feeder.java

package animal;

public class Feeder {
	private String name;
	
	public Feeder(String name) {
		super();
		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());
	}
	void feeder(Animal a, Food f) {
		a.eat(f);
	}
}

8.AnimalTest.java

package animal;

public class AniamlTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal dog=new Dog("金毛");
		Food bone=new Bone();
		Feeder feeder=new Feeder("Lisa");
		feeder.speak();
		feeder.feeder(dog, bone);
		Animal cat=new Cat("波斯猫");
		Food fish=new Fish("黄花鱼");
		feeder.feeder(cat, fish);
	}
}

运行结果

 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值