首页 > 其他 > 详细

16.抽象类

时间:2016-05-28 01:13:36      阅读:189      评论:0      收藏:0      [点我收藏+]
package cn.jbit.epet.override;
/**
 * 宠物类,狗狗和企鹅的父类
 */
public abstract class Pet {
    private String name = "无名氏";// 昵称
    private int health = 100;// 健康值
    private int love = 20;// 亲密度
    
    /**
     * 无参构造方法
     */
    public Pet() {
    }
    /**
     * 有参构造方法
     * @param name  昵称
     */
    public Pet(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }

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

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        if(health<0||health>100){
            System.out.println("健康值应该在0至100之间,默认值为60。");
            this.health=60;
            return;
        }
        this.health = health;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        if(love<0||love>100){
            System.out.println("亲密度应该在0至100之间,默认值为10。");
            this.love=10;
            return;
        }
        this.love = love;
    }

    /**
     * 输出宠物信息
     */
    public void print() {
        System.out.println("宠物的自白:\n我的名字叫" + 
                this.name + ",我的健康值是" + this.health 
                + ",我和主人的亲密程度是" + this.love + "。");
    }
    public abstract void toHospital();
}
package cn.jbit.epet.override;

/**
 * 狗狗类,宠物的子类。
 */
public class Dog extends Pet {
    private String strain="吉娃娃";// 品种
    
    public Dog(){}

    /**
     * 有参构造方法。
     * @param name   昵称
     * @param strain   品种
     */
    public Dog(String name, String strain) {
        super(name); 
        this.strain = strain;
    }
    
    public void setStrain(String strain) {
        this.strain = strain;
    }
    public String getStrain() {
        return strain;
    }
    
    public void print(){
        super.print();
        System.out.println("我是一只"+this.getStrain()+"犬。");
    }
    
    public void toHospital() {
        this.setHealth(60);
        System.out.println("打针、吃药");
    }

}
package cn.jbit.epet.override;

public class Master {
    // 给宠物看病
    public void cure(Pet pet) {
        if (pet.getHealth() < 50)
            pet.toHospital();        
    }
}
package cn.jbit.epet.override;
/**
 * 企鹅类,宠物的子类。
 */
public class Penguin extends Pet {
    private String sex;// 性别
    /**
     * 有参构造方法。
     * @param name 昵称
     * @param sex 性别
     */
    public Penguin(String name, String sex) {
        super(name);
        this.sex = sex;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }    
    
    public void print(){
        super.print();
        System.out.println("我的性别是"+this.getSex()+"。");
    }
    
    public void toHospital() {
        this.setHealth(70);
        System.out.println("吃药、疗养");
    }
}
package cn.jbit.epet.override;

public class Test {
    public static void main(String[] args) {
        Pet dog=new Dog();
        dog.setHealth(10);
        dog.print();
        System.out.println("*************************");
        Master master=new Master();
        master.cure(dog);
        dog.print();
    }
}

 

16.抽象类

原文:http://www.cnblogs.com/xiaotaoxu/p/5536494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!