做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

package com.softeem.demo;

/**

*@authorleno

*动物的接口

*/

interface Animal

{

  publicvoid eat(Food food);

}

/**

*@authorleno

*一种动物类:猫

*/

class Cat implements Animal

{

  publicvoid eat(Food food)

   {

    System.out.println("小猫吃"+food.getName());

   }

}

/**

*@authorleno

*一种动物类:狗

*/

class Dog implements Animal

{

  publicvoid eat(Food food)

   {

    System.out.println("小狗啃"+food.getName());

   }

}

/**

*@authorleno

*食物抽象类

*/

abstractclass Food

{

  protected String name;

   publicString getName() {

    returnname;

   }

  publicvoid setName(String name) {

    this.name = name;

   }

}

/**

*@authorleno

*一种食物类:鱼

*/

class Fish extends Food

{

   publicFish(String name) {

    this.name = name;

   }

}

/**

*@authorleno

*一种食物类:骨头

*/

class Bone extends Food

{  

   publicBone(String name) {

    this.name = name;

   }

}

/**

*@authorleno

*饲养员类

*

*/

class Feeder

{

   /**

   *饲养员给某种动物喂某种食物

  *@paramanimal

  *@paramfood

   */

  publicvoid feed(Animal animal,Food food)

   {

    animal.eat(food);

   }

}

/**

*@authorleno

*测试饲养员给动物喂食物

*/

publicclass TestFeeder {

  publicstaticvoid main(String[] args) {

    Feeder feeder=new Feeder();

    Animal animal=new Dog();

     Foodfood=new Bone("肉骨头");

    feeder.feed(animal,food); //给狗喂肉骨头

    animal=new Cat();

    food=new Fish("鱼");

    feeder.feed(animal,food); //给猫喂鱼

   }

}