Java多态实例主人和狗狗企鹅玩游戏

news/2024/7/3 12:27:27 标签: Java, 多态, 练习

多态实例主人和狗狗企鹅玩游戏">Java多态实例主人和狗狗企鹅玩游戏

需求说明:
主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5
主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加5
提示:
Dog类添加catchingFlyDisc()方法,实现接飞盘功能
Penguin类添加swimming()方法,实现游泳功能
主人添加play(Pet pet)方法
如果pet代表Dog就玩接飞盘游戏
如果pet代表Penguin就玩游泳游戏

Pet类

public class Pet {
    private String name;
    protected int health=100;//健康值
    protected int love = 0;//亲密度

    public Pet() {
        super();
    }

    public Pet(String name, int health, int love) {
        super();
        this.name = name;
        this.health = health;
        this.love = love;

    }

//第二种写法:

/*
public abstract void play();
*/





    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getHealth() {
        return health;
    }
    public void setHealth(int health) {
        this.health = health;
    }
    public int getLove() {
        return love;
    }
    public void setLove(int love) {
        this.love = love;
    }
}

Dog类:
主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5
Dog类添加catchingFlyDisc()方法,实现接飞盘功能

public class Dog extends Pet {
    private String strain;//品种


    public Dog() {
        super();
    }



    public Dog(String strain) {
        super();
        this.strain = strain;

    }

//第二种写法

/*
    @Override
    public void play() {
        // TODO Auto-generated method stub
        catchingFlyDisc(); //调用正在接飞盘的类
    }
*/


    public void catchingFlyDisc(){
        System.out.println("小狗正在接飞盘!");
        super.health =super.health-10; 
        System.out.println("健康值:" + super.health);
        super.love = super.love +5;
        System.out.println("亲密度:" + super.love);
    }

    public String getStrain() {
        return strain;
    }

    public void setStrain(String strain) {
        this.strain = strain;
    }
}

Penguin类:
主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加5 Penguin类添加swimming()方法,实现游泳功能

public class Penguin extends Pet {
    private String sex;


    public Penguin() {
        super();
    }
    public Penguin(String sex) {
        super();
        this.sex = sex;

    }

//第二种写法

/*
@Override
    public void play() {
        // TODO Auto-generated method stub
        swimming();//调用正在游泳的类
    }
*/

    public void swimming(){
        System.out.println("企鹅正在接飞盘!");
        super.health =super.health-10; 
        System.out.println("健康值:" + super.health);
        super.love = super.love +5;
        System.out.println("亲密度:" + super.love);
    }

    public String getSex() {
        return sex;
    }


    public void setSex(String sex) {
        this.sex = sex;
    }
}

Master类:

public class Master {
    private String name;
    private int age;
    public Master() {
        super();
    }
    public Master(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public void play(Pet pet){
         if(pet instanceof Dog){
                Dog dog = (Dog)pet;
                dog.catchingFlyDisc();
            }else if(pet instanceof Penguin){
                Penguin p = (Penguin)pet;
                p.swimming();
            }

    }

//第二种写法

/*
public void play(Pet pet) {
        pet.play();
    }
*/



    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

测试类Test:

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Master m = new Master();

        m.play(new Dog());
        m.play(new Penguin());
    }
}

http://www.niftyadmin.cn/n/813981.html

相关文章

2. TortoiseGit安装与配置

转载地址:http://blog.csdn.net/renfufei/article/details/41647937 说明:个人安装的是2.3.0 但是大致的安装步骤以及过程都是和下面的一样的。当然原作者的右键清空,自己还是保留了下来 TortoiseGit 简称 tgit, 中文名海龟Git. 海龟Git只支…

Java学习之类

Java学习之类 学习要点 面向过程面向对象抽象类类的构造方法类中常见的关键字类的成员方法类的成员变量 一、面向过程 程序 程序的概念 程序一词来自生活,通常指完成某些事情的一种既定方式和过程。 可以将程序看成对一系列动作的执行过程的描述。 计算机程…

3.Git与TortoiseGit基本操作

四大步骤: clone-commit-push-pull1. GitHub操作 本节先简单介绍 Git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commit ...); 相当于有一个服务器端, 可以多个客户端…

Hbuilder中使用git教程

因为云服务器到期的原因,不得不将svn上面的代码迁移出来。思来想去还是确定放在github上面,中间犹豫过clone和push的速度。亲测以后还想速度比想象中快多了,因此结合hbuilder,记录自己使用的过程。默认会从hbuilder安装egit插件

HTML标准中已经废弃的marquee标签

转载地址&#xff1a;http://blog.csdn.net/gsls200808/article/details/48827541 HTML标准中已经废弃的<marquee>标签 参考文章&#xff1a; https://developer.mozilla.org/en/docs/Web/HTML/Element/marqueehttps://en.wikipedia.org/wiki/Marquee_element注意&…

Java练习之方法重载

Java练习之方法重载 方法的重载指的是方法名一样&#xff0c;但是参数类型不一样。 0x1 方法重载 有一种英雄&#xff0c;叫做物理攻击英雄 ADHero 为ADHero 提供三种方法 public void attack() public void attack(Hero h1) public void attack(Hero h1, Hero h2) 方法名…

JS事件委托实例详解教程

引言 事件委托应用在很多开发场景之中&#xff0c;但是很多同学对委托的原理、特别是对JS原生实现委托不太了解。每每看到此情此景我总觉得“众生皆苦”&#xff0c;正所谓“我不写文章&#xff0c;谁写文章”的普渡心态&#xff0c;是以提供这篇文章解救众生之苦&#xff0c;…

win10安装虚拟机

在很早之前windows就已经有了hyper-v虚拟机&#xff0c;只不过相比较vmware名气没有那么大&#xff0c;至少在到今天为止&#xff0c;我自己还是头一次看到&#xff0c;然后查了几篇相关的文章。这里主要是想记录一下win10安装vmware 12.5 pro的过程。 hyper-v相关文章&#x…