zoukankan      html  css  js  c++  java
  • 14.instanceof修改测试类

    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("宠物的自白:
    我的名字叫" + 
                    this.name + ",我的健康值是" + this.health 
                    + ",我和主人的亲密程度是" + this.love + "。");
        }
        
        public abstract void toHospital();
        
        /**
         * 抽象方法eat(),负责宠物吃饭功能。
         */
        public abstract void eat();
    }
    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("打针、吃药");
        }
        
        /**
         * 实现吃食方法。 
         */
        public void eat() {
            if(getHealth()>=100){
                System.out.println("狗狗"+this.getName() +"吃饱了,不需要喂食了!");
            }else{
                this.setHealth(this.getHealth()+3);
                System.out.println("狗狗"+this.getName() + "吃饱啦!健康值增加3。");
            }
        }
        
        //狗狗叼飞碟
        public void catchingFlyDisc(){
            System.out.println("狗狗叼飞碟");
        }
    }
    package cn.jbit.epet.override;
    /**
     * 企鹅类,宠物的子类。 
     */
    public class Penguin extends Pet {
        private String sex;// 性别
        public Penguin(){}
        /**
         * 有参构造方法。
         * @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("吃药、疗养");
        }
        /**
         * 实现吃食方法。 
         */
        public void eat() {
            if(getHealth()>=100){
                System.out.println("企鹅"+this.getName() +"吃饱了,不需要喂食了!");
            }else{
                this.setHealth(this.getHealth()+5);
                System.out.println("企鹅"+this.getName() + "吃饱啦!健康值增加3。");
            }
        }
        
        public void swim(){
            System.out.println("企鹅在南极游泳");
        }
    }
    public class Test {
        public static void main(String[] args) {
            //Pet pet = new Dog();
            Pet pet=new Penguin();
            //使用instanceof判断具体宠物类型,调用特定宠物方法
            if (pet instanceof Dog) {
                Dog dog = (Dog) pet;
                dog.catchingFlyDisc();//执行狗狗特有的方法接飞盘
            } else if (pet instanceof Penguin) {
                Penguin penguin = (Penguin) pet;
                penguin.swim();//执行企鹅特有的方法在南极游泳
            }
        }
    }
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/xiaotaoxu/p/5536477.html
Copyright © 2011-2022 走看看