首页 > 其他分享 >10.11(动物园管理员)

10.11(动物园管理员)

时间:2023-10-11 20:47:00浏览次数:35  
标签:eat void 动物园 public 管理员 Animal 10.11 new class

第一版:

把每种动物都定义为一个类,漏洞大,每天加一种动物或者动物数量发生变化都会需要对代码进行调整

每种动物的喂食函数名也不同

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

相关文章

  • 10.11树的最大深度和判断对称树
    publicclasstrees<T>{privateTdata;publictrees<T>left;publictrees<T>right;publictrees(Tdata){this.data=data;this.left=null;this.right=null;}publictrees(Tdata,trees<T&g......
  • 2023.10.11 js.JSON和js.BOM
    1定义2var变量名='{"key1":value1,"key2":value2}'3varuser='{"字符串":"tom","整型"=20,"数组":["北京","上海","深圳"],"对象":{},"布尔值"......
  • 2023.10.11测试
    \[\text{NOIP模拟赛-2023.10.11}\]T1染色给定\(n\),需要给整数\(1\simn\)染色,使得对于所有\(1\leqi\leqj\leqn\),若\(j-i\)为质数,则\(i,j\)不同色。求颜色最少的染色方案,输出任意一种方案\(1\leqn\leq10000\)诈骗题观察到若\(j=i+4\)则\(i,j\)可同色,所以答......
  • 10.11算法
    买卖股票的最佳时机给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不......
  • 10.11
    packagecom;importjava.util.*;publicclasstest{privatestaticfinalString[]OPERATORS={"+","-","*","/"};privatestaticfinalintMIN_VALUE=1;privatestaticfinalintMAX_VALUE=50;private......
  • 10.11每日总结
    关于java集合迭代器中的it.hashNext()和it.next()方法今天突然想了一下找个问题,网上大多数说是直接取下一个元素,很迷惑,那么迭代器中it.next()方法到底是取当前元素并且指针下移还是直接取得下一个元素呢?下面就找个问题追了一下源码 //jdk1.8privateclassItrimplementsIter......
  • 10.11日记
    工厂方法模式描述:在子类中实现父类的抽象方法不需要修改工厂类,只需要添加就行。符合开闭原则//商品接口的实现类interfaceProduct2{   functionshow():void;}classConcreateProductAimplementsProduct2{   publicfunctionshow():void   {       ......
  • 由于管理员设置的策略,该磁盘处于脱机状态"解决办法
    由于管理员设置的策略,该磁盘处于脱机状态"解决办法1.运行:cmd2.输入:DISKPART.exe3.DISKPART>san4.DISKPART>sanpolicy=onlineall5.DISKPART>listdisk6.DISKPART>selectdisk17.DISKPART>attributesdiskclearreadonly8.DISKPART>onlinedisk......
  • 在DC上使用管理员账号,激活系统时出现““Windows 无法访问指定设备、路劲或文件。你可
    1.在增加语言选择是,也会遇到类似错误:2.在管理工具中,找到“本地安全策略”:3.进入本地策略->安全选项->用户帐户控制:用于内置管理员帐户的管理员批准模式 ->启用......
  • Gitlab管理员忘记密码
    目录Gitlab管理员忘记密码一、背景二、邮箱方式找回1.在gitlab登录窗口2.输入邮箱账号找回3.重设密码三、Bash命令方式找回1.切换到git用户2.查看gitlab命令文件3.进入gitlab控制台4.查询gitlab超级管理员信息4.重置密码并报存用户对象5.返回gitlab登录界面重新登录Gitlab管理员......