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

java代码---多态实现电子宠物系统相关推荐

  1. java代码使用重写来优化电子宠物系统

    需求说明: 使用方法重写优化电子宠物系统,实现如下效果: 依据图片可知,我们可以建立三个类,一个是pet类,一个是dog类,还有一个penguin类,且pet类是dog类和penguin类的父类. 实 ...

  2. java 电子宠物系统

    文章目录 一.父类--Pet 二.子类--DogLady 三.子类--CatLady 四.主人类--Master 五.功能测试类--Test 效果截图 总结 一.父类–Pet 示例:pandas 是基 ...

  3. Java中使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度

    .需求说明 使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60 //企鹅类 public c ...

  4. Java中多态、重写方法、instanceof运算符、重写equals的相关案例

    多态 一.代码及效果图 1.重写 2.重写equals 3.多态 4.instanceof运算符 总结 一.代码及效果图 1.重写 案例:使用方法重写优化电子宠物系统 代码如下(示例): packag ...

  5. 七:面向对象-->封装(电子宠物系统为例)

    通过以下案例对封装进行解析: 需求分析; 使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度 (1)保证健康值的有效性(0-100),否则取默认值60 (2)保证亲密度的有效性(0-100),否则 ...

  6. 七:面向对象-->继承(extends)(继承实现电子宠物系统为例)

    目录 7.1.继承的概念 7.2.继承的语法格式 7.3.继承实现电子宠物系统 7.4.Java只能够实现单根继承 7.5.Super关键字浅谈 7.6.继承条件下的构造方法 7.5.继承访问权限的问 ...

  7. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...

  8. Java中 多态的理解

    ** Java中 多态的理解 ** 多态官方定义为: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指 ...

  9. idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款

    前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...

最新文章

  1. volatile关键字的作用、原理
  2. 多线程解决rospy.spin()语句之后,程序不再往下执行问题
  3. mysql集群安装配置
  4. boost::adaptors::copied相关的测试程序
  5. 主存和cache每一块相等_CPU中的Cache实现原理
  6. java中将字符串顺序反传转_如何在Java中将字符串序列化的Erlang术语反序列化为JInterface对象?...
  7. LeetCode 242. 有效的字母异位词 (计数排序思想字符处理)
  8. matlab gui界面画三角形,新手,用gui界面画李萨如图,出错,求解答
  9. 整数不少于12可以表示为两个复合数字的和
  10. ASP.NET WebService 中使用 ASP.NET_SessionId
  11. 【唯美日出win7热门主题】
  12. SQL数据库置疑的解决办法
  13. 其它——Siege压力测试工具使用
  14. tableau 常用函数整理
  15. Java动态读取map里面的key值
  16. 解决“DNS_PROBE_FINISHED_NXDOMAIN”,访问网站打不开问题
  17. Your Customers Do Not Mean What They Say
  18. 透明、柔性指纹传感器问世
  19. 机器人动力学 拉格朗日乘子法求解动力学方程
  20. 数据挖掘基本流程 CRISP-DM --项目实战总结 可操作性强

热门文章

  1. Win11找不到本地用户和组怎么办
  2. 《如何阅读一本书》目录
  3. Advanced IP Scanner局域网扫描工具
  4. 计算机中负数的二进制表达方法
  5. ubuntu安装nvida驱动时出现:you appear to be running an x server please exit x before installing
  6. Problem J: 神医胡青牛
  7. 课程笔记2:Scrapy框架——Selector(选择器)的用法
  8. GSM的逻辑信道-控制信道-专用控制信道(DCCH
  9. android studio高德地图的基本使用
  10. thinkbook 15p安装ubuntu16.04 触摸板+无线网卡不能用问题解决