java 多态应用_Java多态的应用

package cn.java.pet;

/**

* 宠物抽象类

*/

public abstract class Pet {

private String petName; //宠物名称

private int petHealth; //宠物健康值

private int petLove; //宠物亲密度

public Pet(){

}

public Pet(String name){

this.petName = name;

this.petHealth = 100;

this.petLove = 0;

}

/**

* 宠物自我介绍

*/

public void printInfo(){

System.out.println("我的名字叫"+this.petName+",我的健康值是"+this.petHealth+",我与主人的亲密程度是"+this.petLove);

}

/**

* 宠物看病

*/

public abstract void cure();

/**

* 宠物吃饭

*/

public abstract void eat();

/**

* 宠物玩游戏

*/

public abstract void play();

public String getPetName() {

return petName;

}

public void setPetName(String petName) {

this.petName = petName;

}

public int getPetHealth() {

return petHealth;

}

public void setPetHealth(int petHealth) {

this.petHealth = petHealth;

}

public int getPetLove() {

return petLove;

}

public void setPetLove(int petLove) {

this.petLove = petLove;

}

}

package cn.java.pet;

/**

* 狗狗类

*/

public class DogPet extends Pet {

private String dogBreed; //狗狗品种

//如果父类定义带有参数的构造函数未显示定义无参构造函数,那么子类必须需要调用父类需求的构造函数

public DogPet(String name,String breed){

super(name);

this.setDogBreed(breed);

}

/**

* 狗狗自我介绍, 对宠物类printInfo()方法进行了重写(覆盖)

*/

public void printInfo(){

super.printInfo();//通过super关键字调用父类的需要的方法,super是指在子类中代表父类对象的引用(指向同一个堆内存中地址)

System.out.println("我是一只"+this.getDogBreed());

}

/**

* 狗狗看病

* 重写父类宠物看病的抽象方法

*/

public void cure() {

if(this.getPetHealth()<= 10){

System.out.println("吃药、打针");

this.setPetHealth(this.getPetHealth() + 50);//医治好后为狗狗健康值加50

}else{

System.out.println("主人,我很健康不需要看病.");

}

}

/**

* 狗狗吃饭

* 重写父类宠物吃饭的抽象方法

*/

public void eat() {

if(this.getPetHealth()<= 100){

System.out.println("狗狗"+this.getPetName()+"吃饱啦!健康值增加3.");

this.setPetHealth(this.getPetHealth()+3);

}else{

System.out.println("狗狗"+this.getPetName()+"已经太饱啦,需要运动."+"健康值:"+this.getPetHealth());

}

}

/**

* 狗狗玩游戏

* 重写父类宠物玩游戏的抽象方法

*/

public void play() {

System.out.println("狗狗"+this.getPetName()+"正在玩飞盘...");

this.setPetLove(this.getPetLove()+5); //玩游戏与主人亲密度加5

this.setPetHealth(this.getPetHealth()-10); //健康值减10

}

public String getDogBreed() {

return dogBreed;

}

public void setDogBreed(String dogBreed) {

this.dogBreed = dogBreed;

}

}

package cn.java.pet;

/**

* 企鹅类

*/

public class PenguinPet extends Pet {

private String penguinSex; //企鹅性别

public PenguinPet(String name,String sex){

super(name);

this.penguinSex = sex;

}

/**

* 企鹅自我介绍 ,对宠物类printInfo()方法进行了重写(覆盖)

*/

public void printInfo() {

super.printInfo();

System.out.println("我的性别是"+this.penguinSex);

}

/**

* 企鹅看病

* 重写父类宠物看病的抽象方法

*/

public void cure() {

if(this.getPetHealth()<= 10){

System.out.println("吃药 、疗养");

this.setPetHealth(this.getPetHealth()+50);

}else{

System.out.println("主人,我很健康不需要看病.");

}

}

/**

* 企鹅吃饭

* 重写父类宠物吃饭的抽象方法

*/

public void eat() {

if(this.getPetHealth()<= 100){

System.out.println("企鹅"+this.getPetName()+"吃饱啦!健康值增加5");

this.setPetHealth(this.getPetHealth()+5);

}else{

System.out.println("企鹅"+this.getPetName()+"太饱啦,需要运动!"+"健康值:"+this.getPetHealth());

}

}

/**

* 企鹅玩游戏

* 重写父类宠物玩游戏的抽象方法

*/

public void play() {

System.out.println("企鹅"+this.getPetName()+"正在游泳...");

this.setPetLove(this.getPetLove()+5);

this.setPetHealth(this.getPetHealth()-10);

}

public String getPenguinSex() {

return penguinSex;

}

public void setPenguinSex(String penguinSex) {

this.penguinSex = penguinSex;

}

}

package cn.java.pet;

/**

* 主人类

*/

public class Master {

/**

* 主人为宠物看病

* @param pet 宠物

*/

public void treatPet(Pet pet){

pet.cure();

}

/**

* 与主人玩游戏

* @param pet

*/

public void GamePet(Pet pet){

pet.play();

}

/**

* 吃饭

* @param pet

*/

public void eatPet(Pet pet){

pet.eat();

}

}

package cn.java.pet.test;

import cn.java.pet.DogPet;

import cn.java.pet.Master;

import cn.java.pet.PenguinPet;

import cn.java.pet.Pet;

/**

* 测试类

*/

public class PetTest {

public static void main(String[] args) {

//创建主人实例对象

Master master = new Master();

//创建狗狗实例对象

Pet dogPet = new DogPet("欧欧","雪娜瑞犬");

//与主人玩游戏

master.GamePet(dogPet);

dogPet.printInfo();

//吃饭

master.eatPet(dogPet);

dogPet.printInfo();

//看病

master.treatPet(dogPet);

dogPet.printInfo();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值