Java多态的应用
来源:互联网 发布:樱井知香步兵番号 编辑:程序博客网 时间:2024/05/16 07:59
1.使用多态实现为宠物喂食需求说明:实现如果所示的当宠物饿了(健康值介于0至100之间时),
主人需要为宠物喂食(健康值加3,但上限不超过100),为宠物增加健康值的输出效果。
2.使用多态为宠物看病需求说明:
(1)编写主人类(Master),添加不同的方法,根据输入的宠物类型不同,为不同的宠物看病。编写测试类验证;
(2)使用多态修改代码,为各宠物类添加看病的方法,主人类中保留一个为宠物看病方法即可,参数类型为宠物类类型。编写测试类验证输出效果如图所示。
(注意:同一个引用类型,使用不同的实例而执行不同操作就是多态;方法重写是实现多态的基础)
主人需要为宠物喂食(健康值加3,但上限不超过100),为宠物增加健康值的输出效果。
2.使用多态为宠物看病需求说明:
(1)编写主人类(Master),添加不同的方法,根据输入的宠物类型不同,为不同的宠物看病。编写测试类验证;
(2)使用多态修改代码,为各宠物类添加看病的方法,主人类中保留一个为宠物看病方法即可,参数类型为宠物类类型。编写测试类验证输出效果如图所示。
(注意:同一个引用类型,使用不同的实例而执行不同操作就是多态;方法重写是实现多态的基础)
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(); }}
2 0
- Java多态的应用
- Java多态的应用
- java多态应用
- 通过应用实例讨论Java多态的实现
- java接口、继承、多态的综合应用
- Java多态的应用_模板模式
- Java的数据库应用
- java Bigdecimal的应用
- :java continue的应用
- Java的应用!
- java中流的应用
- java包的应用
- java系统托盘的应用
- java系统托盘的应用
- java系统托盘的应用
- java JSON的应用
- java系统托盘的应用
- java数组的应用
- Nagios监控Windows Server 2008配置
- redis 统一通讯协议 返回结果格式 请求命令格式
- 常用linux指令
- MVC 学习目录
- C++实现动画播放
- Java多态的应用
- React Native开源播放器Video组件(react-native-video)
- Android package属性、package name和Application ID三者的联系及区别
- 网站转安卓APP利器:Website 2 APK Builder
- hibernate一二级缓存
- 一个具有历史意义的时刻
- 初识mySQL(15)
- HttpURLConnection用法详解
- 常用的Git命令