第一版:
把每种动物都定义为一个类,漏洞大,每天加一种动物或者动物数量发生变化都会需要对代码进行调整
每种动物的喂食函数名也不同
package homework; public class text { public static void main(String args[]) { Feeder f = new Feeder("小王"); f.feedLion(new Lion()); for (int i = 0; i < 10; i++) { f.feedMonkey(new Monkey()); } for (int i = 0; i < 5; i++) { f.feedPigeon(new Pigeon()); } } } class Feeder { public String name; public Feeder(String name) { this.name = name; } public void feedLion(Lion l) { l.eat(); } public void feedPigeon(Pigeon p) { p.eat(); } public void feedMonkey(Monkey m) { m.eat(); } } class Lion { public void eat() { System.out.println("吃肉"); } } class Monkey { public void eat() { System.out.println("吃香蕉"); } } class Pigeon { public void eat() { System.out.println("吃大米"); } }
第二版:
相比于第一版来说,定义了一个抽象类,统一了各种动物喂食的函数,使得主函数变得更加的简洁
package homework; public class text { public static void main(String args[]) { Feeder f = new Feeder("小王"); f.feedAnimal(new Lion()); for (int i = 0; i < 10; i++) { f.feedAnimal(new Monkey()); } for (int i = 0; i < 5; i++) { f.feedAnimal(new Pigeon()); } } } class Feeder { public String name; Feeder(String name) { this.name = name; } public void feedAnimal(Animal an) { an.eat(); } } //定义抽象类作为父类 abstract class Animal { //抽象函数eat public abstract void eat(); } //在下面定义各种动物,继承上面的抽象类 class Lion extends Animal { public void eat() { System.out.println("吃肉·"); } } class Monkey extends Animal { public void eat() { System.out.println("吃香蕉"); } } class Pigeon extends Animal { public void eat() { System.out.println("吃大米"); } }
第三版:
利用了增强for循环,将各种动物都统一的存在一个Animal数组之中,代码更简洁,省去了调用喂食函数时的循环
package homework; public class text { public static void main(String args[]) { Feeder f = new Feeder("小王"); Animal[] ans = new Animal[16]; //将各种动物排成一个数组 ans[0] = new Lion(); for (int i = 0; i < 10; i++) { ans[1 + i] = new Monkey(); } for (int i = 0; i < 5; i++) { ans[11 + i] = new Pigeon(); } f.feedAnimals(ans); } } class Feeder { public String name; Feeder(String name) { this.name = name; } public void feedAnimals(Animal[] ans) { for (Animal an : ans) { an.eat(); } } } abstract class Animal { public abstract void eat(); } class Lion extends Animal { public void eat() { System.out.println("吃肉"); } } class Monkey extends Animal { public void eat() { System.out.println("吃香蕉"); } } class Pigeon extends Animal { public void eat() { System.out.println("吃大米"); } }
第四版:
利用了vector容器,vector容器可以动态的添加数组内容,若有动物数量发生变化,更加容易调整。
package homework; import java.util.Vector; public class text { public static void main(String args[]) { Feeder f = new Feeder("小王"); Vector<Animal> ans = new Vector<Animal>(); ans.add(new Lion()); for (int i = 0; i < 10; i++) { ans.add(new Monkey()); } for (int i = 0; i < 5; i++) { ans.add(new Pigeon()); } f.feedAnimals(ans); } } class Feeder { public String name; Feeder(String name) { this.name = name; } public void feedAnimals(Vector<Animal> ans) { for (Animal an : ans) { an.eat(); } } } abstract class Animal { public abstract void eat(); } class Lion extends Animal { public void eat() { System.out.println("吃肉"); } } class Monkey extends Animal { public void eat() { System.out.println("吃香蕉"); } } class Pigeon extends Animal { public void eat() { System.out.println("吃大米"); } }
标签:eat,void,动物园,public,管理员,Animal,10.11,new,class From: https://www.cnblogs.com/xuxingkai/p/17758130.html