JAVA动物园喂动物小实例

249 阅读2分钟

假设动物园只有猫和狗两类动物,猫吃小鱼,狗吃骨头,饲养员喂猫的时候猫会“喵喵喵”的叫,喂狗的时候狗会“汪汪汪”的叫。

根据需求,可以分为六个类文件,动物类,猫类,狗类,食物类,饲养员类,测试类

本实例主要是为了练习JAVA面向对象的继承思想。

本实例总共分为六个类文件,总体结构如下图:
在这里插入图片描述
以下是六个文件的代码,因为本人菜,加了详细的注释,如果有误,请在评论区指出,我会及时改正。

Animal.java

//创建抽象类Animal,
public abstract class Animal {
	//声明私有对象name
	private String name;
	//创建构造方法
	public Animal(String name) {
		//设置成员变量
		this.name=name;
	}
	//声明两个抽象方法,只允许声明,不允许实现
	public abstract void shout();
	public abstract void eat(Food food);
	//因为使用了private进行封装对象,所以需要setget方法。
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	

}

Feeder.java

//创建Feeder类
public class Feeder {
	//声明对象name
	public String name;
	//创建构造方法
	public Feeder(String name) {
		this.name=name;
	}
	//创建没有返回值的方法speak,用来输出提示信息
	public void speak() {
		System.out.println("欢迎来到动物园!");
		System.out.println("我是饲养员"+getName());
	}
	//创建没有返回值的方法feed
	public void feed(Animal a,Food food) {
		a.eat(food);
	}
	//因为使用了private进行封装对象,所以需要setget方法。
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}

}

Food.java

//创建Food类
public class Food {
	//使用private声明私有对象name
	private String name;
	//因为name对象使用private进行封装,所以要用setget方法
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}

}

Cat.java

//创建Cat类并用extends继承父类Animal
public class Cat extends Animal {
	//创建构造方法
	public Cat(String name) {
		//使用super调用父类中的构造函数name
		super(name);
	}
	//创建没有返回值的方法shout,输出猫的叫声
	public void shout() {
		System.out.print("喵喵喵~~~");
	}
	//创建没有返回值的方法eat,输出猫吃东西的行为
	public void eat(Food food) {
			System.out.println(getName()+"正在吃着香喷喷的"+food.getName());
			
	}
	

}

Dog.java

public class Dog extends Animal {
	public Dog(String name) {
		super(name);
	}
	
	public void shout() {
		System.out.print("汪汪汪~~~");
	}
	public void eat(Food food) {
			System.out.println(getName()+"正在吃着香喷喷的"+food.getName());
			
	}
	

}

Test.java

//创建Test测试类
public class Test {
	//声明main方法
	public static void main(String[] args) {
		//创建feeder对象并赋值
		Feeder feeder =new Feeder("小花");
		//调用feeder中的speak方法
		feeder.speak();
		//创建dog对象并赋值
		Dog dog = new Dog("小狗");
		//调用dog中的shout方法
		dog.shout();
		//创建food对象
		Food food = new Food();
		//为food对象添加属性
		food.setName("骨头");
		//调用feeder中的feed方法
		feeder.feed(dog, food);
		//创建cat对象并赋值
		Cat cat = new Cat("小猫");
		//调用cat中的shout方法
		cat.shout();
		//为food对象添加属性
		food.setName("小鱼");
		//调用feeder中的feed方法
		feeder.feed(cat, food);
		
	}

}