首页 > 技术文章 > 使用多态完成给宠物喂食

yangwenxiang 2019-01-21 17:04 原文

主程序类:

package com.bdqn;

public class PetTest {
    public static void main(String[] args) {
        Master master = new Master();
        Pet dog = new Dog();
        dog.setName("黑鼻");
        dog.setHealth(88);
        dog.setLove(78);
        ((Dog) dog).setStrain(1);
        dog.print();
        master.feed(dog);

        System.out.println("**********************");

        Pet penguin = new Penguin();
        penguin.setName("QQ");
        penguin.setHealth(100);
        penguin.setLove(76);
        ((Penguin) penguin).setSex(1);
        penguin.print();
        master.feed(penguin);
    }
}

主人类

package com.bdqn;

public class Master {
    public void feed(Pet pet){
        if(pet instanceof Dog){
            Dog dog = (Dog)pet;
            dog.eat();
        }else if(pet instanceof Penguin){
            Penguin penguin = (Penguin) pet;
            penguin.eat();
        }
    }
}

pet类

package com.bdqn;

public abstract class Pet {
    private String name;
    private int health;
    private int love;

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

    public void setHealth(int health) {
        if(health < 0 || health > 100){
            health = 60;
        }
        this.health = health;
    }
    public int getHealth() {
        return health;
    }

    public void setLove(int love) {
        if(love < 0 || love > 100){
            love = 60;
        }
        this.love = love;
    }
    public int getLove() {
        return love;
    }

    public void print(){
        System.out.println("宠物的自白:");
        System.out.print("我的名字叫"+getName()+",健康值是"+getHealth()+",和主人的亲密度是"+getLove());
    }

    public abstract void eat();
}

dog类

package com.bdqn;

public class Dog extends Pet{
    private String strain;

    public String getStrain() {
        return strain;
    }

    public void setStrain(int  strain) {
        if(strain == 1){
            this.strain = "拉布拉多";
            return;
        }
        this.strain = "博美";
    }

    public void print(){
        super.print();
        System.out.println(",我的种类是:"+this.getStrain());
    }

    public void eat() {
        if(getHealth()==100){
            System.out.println("狗狗已经饱了,不需要吃东西了。");
        }else {
            System.out.println("带狗狗去吃骨头......");
            setHealth(getHealth() + 3);
            System.out.println("狗狗的健康值为:"+getHealth());
        }
    }

}

penguin类

package com.bdqn;

public class Penguin extends Pet{
    private String sex;

    public String getSex() {
        return sex;
    }

    public void setSex(int sex) {
        if(sex == 1 ){
            this.sex = "Q仔";
            return;
        }
        this.sex = "Q妹";
    }

    public void print(){
        super.print();
        System.out.println(",我的性别是:"+this.getSex());
    }

    public void eat() {
        if(getHealth()==100){
            System.out.println("企鹅已经饱了,不需要吃东西了。");
        }else {
            System.out.println("带企鹅去吃骨头......");
            setHealth(getHealth() + 5);
            System.out.println("qie的健康值为:"+getHealth());
        }
    }
}

程序运行结果

 

推荐阅读