溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么用java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)

發(fā)布時(shí)間:2022-02-24 16:34:45 來(lái)源:億速云 閱讀:229 作者:iii 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下怎么用java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

效果實(shí)現(xiàn):

怎么用java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)

代碼實(shí)現(xiàn):

1、主人類(lèi):

public class Master {
    //領(lǐng)養(yǎng)
    public Pet adopt(String name){
        if ("狗狗".equals(name)){
            return new Dog();
        }else if (name.equals("企鵝")){
            return new Penguin();
        }
        return null;
    }
    //喂食
    public void feed(Pet pet, String food){
        pet.eat(food);
    }

    //玩耍
    public void play(Pet pet){
        if(pet instanceof Dog){
            Dog d= (Dog) pet;
            d.catchDisk();
        }else if(pet instanceof Penguin){
            Penguin p= (Penguin) pet;
            p.swimInSouth();
        }

    }
    //捐獻(xiàn)
    public Pet donate(String name){
        if("狗狗".equals(name)){
            return new Dog();
        }else if(name.equals("企鵝")){
            return new Penguin();
        }
        return null;
    }
}

2、狗狗類(lèi):

public class Dog extends Pet {
    public void catchDisk(){
        System.out.println("狗狗接飛盤(pán)!");
    }

    public Dog(int health) {
        super(health);
    }

    public Dog() {
    }

    @Override
    public void eat(String food) {
        System.out.println("狗狗吃"+food+",吃飽后健康值+3");
        setHealth(getHealth()+3);
    }
}

3、企鵝類(lèi):

public class Penguin extends Pet{
    public void swimInSouth(){
        System.out.println("企鵝在南極游泳!");
    }

    public Penguin(int health) {
        super(health);
    }
    public Penguin() {
    }
    @Override
    public void eat(String food) {
        System.out.println("企鵝寶寶吃"+food+",吃完后,健康值加5");
        setHealth(getHealth()+5);
    }
}

4、寵物類(lèi),Pet:

public class Pet {
    private int health;

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
        if(this.health>100){
            this.health=100;
            System.out.println("已經(jīng)吃飽了,再吃就撐破了");
        }
    }

    public Pet() {
    }

    public Pet(int health) {
        this.health = health;
    }

    public void eat(String food){
        System.out.println("寵物吃"+food);
    }
}

5、測(cè)試類(lèi):

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Master master = new Master();
        //領(lǐng)養(yǎng)
        System.out.print("請(qǐng)輸入您要領(lǐng)養(yǎng)的寵物:");
        String dname = sc.next();
        Pet p = master.adopt(dname);
        //主人給狗狗喂食,玩耍
        System.out.print("請(qǐng)輸入您要喂得食物:");
        String dfood = sc.next();
        master.feed(p,dfood);
        System.out.println(p.getHealth());
        master.play(p);

        //主人給企鵝喂食,玩耍
        System.out.print("請(qǐng)輸入您要玩的寵物:");
        String pname = sc.next();
        p = master.adopt(pname);
        System.out.print("請(qǐng)輸入您要喂的食物:");
        String pfood = sc.next();
        master.feed(p,pfood);
        System.out.println(p.getHealth());
        master.play(p);

        //捐贈(zèng)出去
        System.out.print("請(qǐng)輸入您要捐贈(zèng)的寵物:");
        String jname = sc.next();
        Pet pet = master.donate(jname);
        System.out.println();
        System.out.println("您捐獻(xiàn)的是:"+pet.getClass().getName());
    }
}

補(bǔ):這里測(cè)試類(lèi)我是讓用戶(hù)在控制臺(tái)輸入,如果不想輸入,可將測(cè)試類(lèi)Test換成下面的代碼:

public class TestPet {
    public static void main(String[] args) {
        Master m = new Master();
        //領(lǐng)養(yǎng)
        Pet p = m.adopt("狗狗");
        //主人給狗狗喂食,玩耍
        m.feed(p,"大骨頭");
        System.out.println(p.getHealth());
        m.play(p);

        //主人給企鵝喂食,玩耍
        p = m.adopt("企鵝");
        m.feed(p,"小魚(yú)");
        System.out.println(p.getHealth());
        m.play(p);

        //捐獻(xiàn)出去
        Pet pet = m.donate("狗狗");
        System.out.println("您捐獻(xiàn)的是:"+pet.getClass().getName());
    }
}

以上就是“怎么用java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI