• 多态-典型用法


    package 多态.典型用法;
    /*
    * 宠物 父类
    * */
    public  abstract class Pet {
        private int health;//健康
    
        public int getHealth() {
            return health;
        }
    
        public void setHealth(int health) {
            this.health = health;
        }
        //宠儿生病去医院
        public  abstract void toHopsoital();
        public  abstract void eat();
    }


    package
    多态.典型用法; /* * 狗类 * */ public class Dog extends Pet { @Override public void toHopsoital() { System.out.println("打针"); System.out.println("吃药"); //狗的治疗健康度+3 int old = this.getHealth(); this.setHealth(old+3); } public void jiefeipan(){ System.out.println("接飞盘"); } @Override public void eat() { System.out.println("狗吃屎"); int old = this.getHealth(); this.setHealth(old+30); } }
    package 多态.典型用法;
    /*
    * 企鹅
    * */
    public class Penguin extends Pet {
        @Override
        public void toHopsoital() {
    
    //        System.out.println("打针");
                System.out.println("吃药");
                //企鹅的治疗健康度+5
                int old = this.getHealth();
                this.setHealth(old+5);
        }
    
        public void qianshui(){
            System.out.println("潜水");
        }
    
        @Override
        public void eat() {
            System.out.println("企鹅吃毛线");
            int old = this.getHealth();
            this.setHealth(old+50);
        }
    }
    package 多态.典型用法;
    /*
    * snake类
    * */
    public  class  Snake extends Pet {
    
        @Override
        public void toHopsoital() {
            System.out.println("打针");
            System.out.println("吃药");
            //狗的治疗健康度+3
            int old = this.getHealth();
            this.setHealth(old+6);
        }
        @Override
        public void eat() {
            System.out.println("你就啥都吃不到" );
            int old = this.getHealth();
            this.setHealth(old+60);
        }
    }
    package 多态.典型用法;
    
    /*
     *对象 instanceof 类或接口
     * 判断对象是否是该类的对象,如果是返回true,不是返回false
     *
     * */
    public class Master {
        //
        void cure(Pet pet) {  //赋值是父类 传参传的类型是子类对象   相当于Pet pet=dog  Pet是父类 dog是子类
            pet.toHopsoital();
            //想调用子类独有的方法
            //如果传进来的类型
            if (pet instanceof Dog) {
                ((Dog) pet).jiefeipan();
            } else if (pet instanceof Penguin) {
                ((Penguin) pet).qianshui();
            }
        }
    
        void eat(Pet pet){
            pet.eat();
        }
    }
    package 多态.典型用法;
    
    /*
    * 不用多态 增加一种宠物类
    *
    * */
    public class Test {
        public static void main(String[] args) {
            Master master = new Master();
    //
            Dog dog =new Dog();
            dog.setHealth(22);
            master.cure(dog); // Pet pet=dog
            System.out.println("治疗后健康度是"+dog.getHealth());
    
            Penguin penguin =new Penguin();
            penguin.setHealth(19);
            master.cure(penguin);
            System.out.println("治疗后健康度是"+penguin.getHealth());
    
    
            Snake snake =new Snake();
            snake.setHealth(19);
            master.cure(snake);
            System.out.println("治疗后健康度是"+snake.getHealth());
    
            master.eat(dog);
            System.out.println("健康度是"+dog.getHealth());
            master.eat(penguin);
            System.out.println("健康度是"+penguin.getHealth());
            master.eat(snake);
            System.out.println("健康度是"+snake.getHealth());
    
    
        }
    
    
        }
  • 相关阅读:
    springboot集成thymeleaf中不能返回页面,只返回字符串
    MySql 视图
    边缘计算网关的作用
    什么是物联网网关?它有什么功能?
    RS232串口跟RS485串口有什么优缺点
    4G DTU在油田远程监控中的应用
    远程IO模块有何用途
    Spring5快乐教程(一)Spring概述
    vue水印-第一种方法
    js获取随机打乱的数组
  • 原文地址:https://www.cnblogs.com/houtian2333/p/10702749.html
Copyright © 2020-2023  润新知