java多态实现电子宠物系统

本文实例为大家分享了java多态实现电子宠物系统的具体代码,供大家参考,具体内容如下

效果实现:

代码实现:

1、主人类:

public class Master {
    //领养
    public Pet adopt(String name){
        if ("狗狗".equals(name)){
            return new Dog();
        }else if (name.equals("企鹅")){
            return new Penguin();
        }
        return null;
    }
    //喂食
    public void feed(Pet pet, String food){
        pet.eat(food);
    }

    //玩耍
    public void play(Pet pet){
        if(pet instanceof Dog){
            Dog d= (Dog) pet;
            d.catchDisk();
        }else if(pet instanceof Penguin){
            Penguin p= (Penguin) pet;
            p.swimInSouth();
        }

    }
    //捐献
    public Pet donate(String name){
        if("狗狗".equals(name)){
            return new Dog();
        }else if(name.equals("企鹅")){
            return new Penguin();
        }
        return null;
    }
}

2、狗狗类:

public class Dog extends Pet {
    public void catchDisk(){
        System.out.println("狗狗接飞盘!");
    }

    public Dog(int health) {
        super(health);
    }

    public Dog() {
    }

    @Override
    public void eat(String food) {
        System.out.println("狗狗吃"+food+",吃饱后健康值+3");
        setHealth(getHealth()+3);
    }
}

3、企鹅类:

public class Penguin extends Pet{
    public void swimInSouth(){
        System.out.println("企鹅在南极游泳!");
    }

    public Penguin(int health) {
        super(health);
    }
    public Penguin() {
    }
    @Override
    public void eat(String food) {
        System.out.println("企鹅宝宝吃"+food+",吃完后,健康值加5");
        setHealth(getHealth()+5);
    }
}

4、宠物类,Pet:

public class Pet {
    private int health;

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
        if(this.health>100){
            this.health=100;
            System.out.println("已经吃饱了,再吃就撑破了");
        }
    }

    public Pet() {
    }

    public Pet(int health) {
        this.health = health;
    }

    public void eat(String food){
        System.out.println("宠物吃"+food);
    }
}

5、测试类:

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Master master = new Master();
        //领养
        System.out.print("请输入您要领养的宠物:");
        String dname = sc.next();
        Pet p = master.adopt(dname);
        //主人给狗狗喂食,玩耍
        System.out.print("请输入您要喂得食物:");
        String dfood = sc.next();
        master.feed(p,dfood);
        System.out.println(p.getHealth());
        master.play(p);

        //主人给企鹅喂食,玩耍
        System.out.print("请输入您要玩的宠物:");
        String pname = sc.next();
        p = master.adopt(pname);
        System.out.print("请输入您要喂的食物:");
        String pfood = sc.next();
        master.feed(p,pfood);
        System.out.println(p.getHealth());
        master.play(p);

        //捐赠出去
        System.out.print("请输入您要捐赠的宠物:");
        String jname = sc.next();
        Pet pet = master.donate(jname);
        System.out.println();
        System.out.println("您捐献的是:"+pet.getClass().getName());
    }
}

补:这里测试类我是让用户在控制台输入,如果不想输入,可将测试类Test换成下面的代码:

public class TestPet {
    public static void main(String[] args) {
        Master m = new Master();
        //领养
        Pet p = m.adopt("狗狗");
        //主人给狗狗喂食,玩耍
        m.feed(p,"大骨头");
        System.out.println(p.getHealth());
        m.play(p);

        //主人给企鹅喂食,玩耍
        p = m.adopt("企鹅");
        m.feed(p,"小鱼");
        System.out.println(p.getHealth());
        m.play(p);

        //捐献出去
        Pet pet = m.donate("狗狗");
        System.out.println("您捐献的是:"+pet.getClass().getName());
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java实现宠物商店管理系统

    本文实例为大家分享了Java实现宠物商店管理系统的具体代码,供大家参考,具体内容如下 一.实验目的 1.掌握java类的继承.多态等的基本概念: 2.掌握简单的信息管理系统的设计与实现. 二.实验环境 实验建议在安装了以下软件的计算机上完成: 1. Windows xp/win7/win8/win10操作系统 2. JDK 1.6以上版本 3. Eclipse或NetBeans IDE或EditPlus或其它开发工具 三.实验内容与要求 (一) 问题描述 要求采用java面向对象的基本知识,实现

  • Java实战宠物医院预约挂号系统的实现流程

    一.项目简述 功能包括: 用户分为宠物,医生,管理员,宠物主人可进行注册选择医生挂号,选择日期,选择号源,医生可进行宠物接诊,管理员可对宠物,医生信息的维护等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: JSP +Spring + SpringBoot + MyBatis + html+ css + JavaScript + JQuery +

  • Java毕业设计实战项目之宠物商城系统的实现流程

    一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持). 项目技术: Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等. 后台相关接口: /** * 后台相关接口 */ @Controller @RequestMapping("/admin") publi

  • Java 实战交易平台项目之宠物在线商城系统

    该系统分为前台和后台,前台可以自主注册,后台管理员角色,除基础脚手架外,实现的功能有: 后台管理员功能有:商品分类管理.商品管理.套餐管理.新闻分类管理.新闻管理.常见问题.关于我们.团队管理.订单查看和前台用户查看等功能. 前台用户功能有:注册登录.查看商品.购物车.支付订单.评价.照片库.新闻列表.个人中心.购买套餐等功能. 运行环境:windows/Linux均可.jdk1.8.mysql5.7.maven3.5\maven3.6.idea/eclipse均可. 系统控制器代码: /**

  • Java毕业设计实战之宠物医院与商城一体的系统的实现

    项目运行: 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等 宠物医院与商城一体的系统 后端管理员控制层: /** * 后端管理员控制层 */ @Controller @RequestMapping("/a

  • java多态实现电子宠物系统

    本文实例为大家分享了java多态实现电子宠物系统的具体代码,供大家参考,具体内容如下 效果实现: 代码实现: 1.主人类: public class Master {     //领养     public Pet adopt(String name){         if ("狗狗".equals(name)){             return new Dog();         }else if (name.equals("企鹅")){        

  • Java多态(动力节点Java学院整理)

    什么是多态 1. 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 2. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 3. 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 4. 多态的作用:消除类型之间的耦合关系. 5. 现实中,关于多

  • Java多态的使用注意事项

    Java多态是如何实现的?Java的多态和C++一样,是通过延时绑定(late binding)或者说运行时绑定(runtime binding)来实现的.当调用某一个对象引用的方法时,因为编译器并不知道这个引用到底指向的是变量声明时说明的类型对象,还是该类型子类的对象.因此编译器无法为这次调用绑定到具体的某个方法.只有通过java中的运行时类型识别(RTTI, Runtime type identification)在运行时绑定到具体的方法.下面是一个具体的例子: 复制代码 代码如下: cla

  • Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    接口的灵活性就在于"规定一个类必须做什么,而不管你如何做". 我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似. //定义接口InterA interface InterA { void fun(); } //实现接口InterA的类B class B implements InterA { public void fun() { System.out.pri

  • 详解Java多态对象的类型转换与动态绑定

    Java多态对象的类型转换 这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. 在继承链中,我们将子类向父类转换称为"向上转型",将父类向子类转换称为"向下转型". 很多时候,我们会将变量定义为父类的类型,却引用子类的对象,这个过程就是向上转型.程序运行时通过动态绑定来实现对子类方法的调用,也就是多态性. 然而有些时候

  • 浅谈java多态的实现主要体现在哪些方面

    thinking in java3中的多态 People are often confused by other, non-object-oriented features of Java, like method overloading, which are sometimes presented as object-oriented. Don't be fooled: If it isn't late binding, it isn't polymorphism 按文面翻译 人们总是被jav

  • Java多态用法与注意点实例分析

    本文实例讲述了Java多态用法与注意点.分享给大家供大家参考,具体如下: 一 点睛 向上转型:或者称为向父类转型.父类的对象通过子类对象实例化,实际上就是对象的向上转型.向上转型不需要进行强制类型转换,但是向上转型会丢失精度. 向下转型:或者称为向子类转型.也就是说父类对象可以转换为子类对象,但是,此时必须进行强制类型转换. 向上转型时,父类对象所能看见的方法依然是本类之中定义的方法(即被子类覆盖的方法).如果子类扩充了一些新的方法,父类是看不见的. 二 父类对象找不到子类的扩充方法 1 代码

  • 通过实例分析java多态

    这篇文章主要介绍了通过实例分析java多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先来看这样的一段代码,其中对于类的定义如下: class Parent{ public int myValue=100; public void printValue() { System.out.println("Parent.printValue(),myValue="+myValue); } } class Child extends P

  • java 多态实例代码

    多态是同一个行为具有多个不同表现形式或形态的能力.多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现,比如: 在现实中,我们按下F1键这个动作: 如果当前在Flash界面下弹出的就是AS 3的帮助文档 如果当前在Word下弹出的就是Word帮助 在Windows下弹出的就是Windows帮助和支持 多态存在的三个必要条件 继承 重写 父类引用指向子类对象 Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有

  • 简单了解Java多态向上转型相关原理

    这篇文章主要介绍了简单了解Java多态向上转型相关原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 多态性是面向对象的第三大特征. 多态的优点 改善代码的组织结构和可读性. 能够创建可扩展的程序.(随时可以加入新功能) 消除类型之间的耦合关系. 说实话,作为小白的我,并不太能够理解上面三个优点.随着深入学习,理解应该会越来越深吧,共勉. 向上转型 概念 Java允许把子类对象赋值给父类的引用变量,不用做任何强制转换,系统自动完成.向上转型来自

随机推荐