博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多态-典型用法
阅读量:6380 次
发布时间:2019-06-23

本文共 3040 字,大约阅读时间需要 10 分钟。

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());    }    }

 

转载于:https://www.cnblogs.com/houtian2333/p/10702749.html

你可能感兴趣的文章
编辑器领域正发生变革?从面试看Visual Studio Code的崛起
查看>>
搞懂nginx的rewrite模块
查看>>
一文带你快速读懂.NET CLI
查看>>
金丝雀测试实践
查看>>
用 JavaScript 实现链表操作 - 02 Length & Count
查看>>
Eclipse发布MicroProfile 1.4和2.0
查看>>
DNS故障转移
查看>>
详解分布式系统本质:“分治”和“冗余”
查看>>
在OSChina一键部署开源软件,简单到没什么可说的
查看>>
关于React的Container&Presentational Component模型结构分析
查看>>
举重若轻的人人车移动端数据平台
查看>>
编写Linux内核模块——第一部分:前言
查看>>
小白的正则入门
查看>>
云原生持续交付的模式和实践
查看>>
安装 Windows 10 + Centos 7 双系统共存
查看>>
python学习笔记-函数的参数
查看>>
angular 1.x多项目共享子项目实践之路
查看>>
python学习笔记-切片
查看>>
Mac PHPStorm 使用心得
查看>>
Android LRecyclerView实现Item侧滑菜单、长按拖拽Item、滑动删除Item等功能
查看>>