【java】饲养员喂养动物程序设计

以动物园中饲养员给动物喂食为业务背景,让同学们体会“抽象类、类的继承、接口、接口实现类、方法重写和多态”等面向对象思想的综合应用。 

动物园有饲养员,以及狗、猫这两种动物。饲养员给不同的动物喂不同的食物:给
狗喂骨头,给猫喂鱼。动物进食时会发出叫声:狗会汪汪叫,而猫会喵喵叫。

程序模拟饲养员喂食动物的过程,主要功能如下:
( 1) 饲养员说:“欢迎来到动物园!我是饲养员×××”。
(2) 饲养员给狗喂骨头,狗吃食物发出“汪汪~~”的叫声。
( 3) 饲养员给猫喂鱼,猫吃食物发出“喵喵~~”的叫声。

【案例目标】

• 学会分析“饲养员喂养动物”程序设计的实现思路。

• 根据思路独立完成“饲养员喂养动物”程序设计的源代码编写、编译及运行。

• 学会灵活运用接口解决多继承问题。

【案例分析】
案例涉及的对象有饲养员,各种不同动物以及各种不同的食物。这样很容易抽象
出 3 个类:饲养员 Feeder、动物 Animal 和食物 Food。
动物园喂养了猫类和狗类动物,则由 Animal 类派生出 Cat 类、 Dog 类。

同样,由 Food 类可以派生出其子类:骨头 Bone 类、鱼 Fish 类。由于鱼既是一种
食物,实际上也是一种动物。但是 Java 不支持多重继承,因此 Fish 不可能有 Food 和

Animal 两个父类。解决方法是把 Food 和 Animal 其中之一改为接口。考虑到 Cat 类和

Dog 类需要继承 Animal 的很多属性和方法, Food 中虽然也有变量但是数量比 Animal

少,所以我们最终考虑将 Food 定义为接口,让 Fish 和 Bone 去实现接口。

【程序结构】
在这里插入图片描述
【运行代码】
1.

package cn.edu.gpnu.bank.Feeder;

public abstract class Animal {
    public String name;

    public Animal(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void eat(Food food);
}

package cn.edu.gpnu.bank.Feeder;

class Bone implements Food {
    private String name;

    public Bone(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName(){
        return name;
    }

}

package cn.edu.gpnu.bank.Feeder;

public class Cat extends Animal{

    public Cat(String name) {
        super(name);
    }

    public void eat(Food food) {
        System.out.println("喵喵喵~~"+getName()+"正在吃鲜美的"+food.getName());
    }
}

package cn.edu.gpnu.bank.Feeder;

public class Dog extends Animal {

    public Dog(String name) {
        super(name);
    }


    public void eat(Food food){
        System.out.println("汪汪汪~~"+getName()+"正在啃香喷喷的"+food.getName());
    }
}

package cn.edu.gpnu.bank.Feeder;

public  class Feeder {
    public String name;

    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("欢迎来到动物园!"+"我是饲养员"+getName());
    }

    public void feed(Animal animal,Food food){
        animal.eat(food);
    }

}

package cn.edu.gpnu.bank.Feeder;

class Fish extends Animal implements Food {

    public Fish(String name) {
        super(name);
    }

    @Override
    public String getName() {
        super.getName();
        return name;
    }



    @Override
    public void eat(Food food) {

    }
}

package cn.edu.gpnu.bank.Feeder;

public interface Food {

    public String getName();

}

package cn.edu.gpnu.bank.Feeder;

public class Zoo {
    public static void main(String[] args){
        Feeder feeder = new Feeder("小华");
        feeder.speak();

        Dog dog = new Dog("泰迪犬");
        Cat cat = new Cat("波斯猫");

        Bone bone =new Bone("猪骨头");
        Fish fish =new Fish("黄花鱼");

        feeder.feed(dog,bone);
        feeder.feed(cat,fish);
    }
}

【运行结果】
在这里插入图片描述

  • 20
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java饲养员是一个虚构的角色,用来说明Java编程语言中的一种概念,即封装和继承。在Java中,我们可以使用类和对象来模拟现实世界中的各种事物,比如动物饲养员就是负责喂养动物的人,我们可以将其表示为一个类。 在Java中,我们可以创建一个Animal类作为基类,然后创建不同类型的动物类作为其子类,比如Dog类、Cat类等。这些子类会继承基类Animal的属性和方法,并可以根据需要进行扩展或重写。 饲养员可以通过创建动物对象并调用相应的方法来喂养动物。例如,可以创建一个Dog对象,并调用它的eat()方法来喂养狗。 下面是一个简单的示例代码: ```java // Animal类作为基类 class Animal { public void eat() { System.out.println("动物正在进食..."); } } // Dog类作为Animal的子类 class Dog extends Animal { @Override public void eat() { System.out.println("狗正在吃骨头..."); } } // Cat类作为Animal的子类 class Cat extends Animal { @Override public void eat() { System.out.println("猫正在吃鱼..."); } } // 饲养员类 class JavaZookeeper { public void feedAnimal(Animal animal) { animal.eat(); } } public class Main { public static void main(String[] args) { JavaZookeeper zookeeper = new JavaZookeeper(); Animal animal1 = new Dog(); Animal animal2 = new Cat(); zookeeper.feedAnimal(animal1); // 喂养狗 zookeeper.feedAnimal(animal2); // 喂养猫 } } ``` 这段代码中,我们定义了Animal类作为基类,Dog和Cat类作为其子类。饲养员JavaZookeeper中的feedAnimal()方法接收一个Animal对象作为参数,并调用其eat()方法来喂养动物。在main()方法中,我们创建了一个JavaZookeeper对象,并分别传入Dog和Cat对象进行喂养
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值