【案例 4-2】饲养员喂养动物
生活随笔
收集整理的這篇文章主要介紹了
【案例 4-2】饲养员喂养动物
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【案例目標】
飼養員在給動物喂食時,給不同的動物喂不同的食物,而且在每次喂食時,動物都會發
出歡快的叫聲。例如,給小狗喂骨頭,小狗會汪汪叫;給小貓喂食,小貓會喵喵叫。
本案例要求編寫一個程序模擬飼養員喂食動物的過程,案例要求如下:
(1) 飼養員給小狗喂骨頭,小狗汪汪叫。
(2) 飼養員給小貓喂小魚,小貓喵喵叫。
【案例目標】
? 學會分析“飼養員喂養動物”程序設計的實現思路。
? 根據思路獨立完成“飼養員喂養動物”程序設計的源代碼編寫、編譯及運行。
? 學會靈活運用接口解決多繼承問題。
【案例分析】
在這個動物園里,涉及的對象有飼養員,各種不同動物以及各種不同的食物。這樣很容
易抽象出 3 個類 Feeder、Animal 和 Food。假設只考慮貓類和狗類動物,則由 Animal 類派生
出 Cat 類、Dog 類、同樣由 Food 類可以進一步派生出其子類 Bone、Fish。因為他們之間存
在這明顯的 is-a 關系。
同樣的,魚是一種食物,但實際上,魚也是一種動物,Cat 類和 Dog 類繼承了 Animal 的
很多屬性和方法,如果將 Animal 定義為接口,Animal 中是不能定義成員變量和成員方法的,
Food 類中雖然也有變量但是數量比 Animal 少,所以我們考慮將 Food 定義為接口,此時可
以說“魚是一種動物,同時也是一種食物”。
【案例實現】
abstract class Animal {private String name;public Animal(String name) {this.name = name;}public abstract void shout();public abstract void eat(Food food);public String getName() {return name;}public void setName(String name) {this.name = name;} }class Dog extends Animal {public Dog(String name) {super(name);}@Overridepublic void shout() {System.out.print("汪汪汪~~~");}@Overridepublic void eat(Food food) {System.out.println(super.getName() + "正在吃著香噴噴的" + food.getName());} }class Cat extends Animal {public Cat(String name) {super(name);}public void shout() {System.out.print("喵喵喵~~~");}public void eat(Food food) {System.out.println(super.getName() + "正在吃著香噴噴的" + food.getName());} }interface Food {public abstract String getName(); }class Bone implements Food {@Overridepublic String getName() {return "骨頭";} }class Fish extends Animal implements Food {public Fish(String name) {super(name);}@Overridepublic void shout() {System.out.print("咕嚕嚕~~~");}@Overridepublic void eat(Food food) {System.out.println(super.getName() + "正在吃著香噴噴的" + food.getName());} }class Feeder {private String name;public Feeder(String name) {this.name = name;}public void speak() {System.out.println("歡迎來到動物園!");System.out.println("我是飼養員," + this.name);}public void feed(Animal a, Food food) {a.eat(food);}public String getName() {return name;}public void setName(String name) {this.name = name;} }public class DongWuTest {public static void main(String[] args) {Feeder feeder = new Feeder("小華");feeder.speak();Dog dog = new Dog("小狗");dog.shout();Food food = new Bone();feeder.feed(dog, food);Cat cat = new Cat("小貓");cat.shout();food = new Fish("黃花魚");feeder.feed(cat, food);} }總結
以上是生活随笔為你收集整理的【案例 4-2】饲养员喂养动物的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 社交类产品创业难点在哪儿?
- 下一篇: “海底数据中心”被打捞出水,故障率仅为陆