008.第八章.多态汇编.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
008.第八章.多态汇编

Java程序设计 基于Java语言的面向对象程序设计 第二部分 Java面向对象编程 Java程序设计 回顾 实现继承的关键字是什么? 使用继承有什么好处? 子类继承父类后,如何调用父类的属性和方法? 什么是抽象类? 第八章 多态 第一节 没有多态会怎么样? Java程序设计 为什么使用多态 1 实现一个主人类,当宠物饿了的时候需要给宠物喂食。 给主人类(Master)添加一个feed方法。 然而,不同宠物吃的东西不一样: 其次,不同宠物吃完食物恢复后体力值不一样: 吃狗粮 吃鱼 狗狗 企鹅 健康值增加3 狗狗 健康值增加5 企鹅 为什么使用多态 2 狗狗类 增加狗狗吃食的方法 企鹅类 增加企鹅吃食的方法 创建主人类 编写给狗狗喂食的方法 编写给企鹅喂食的方法 编写测试方法 调用主人类给狗狗喂的方法 调用主人类给企鹅喂的方法 为什么使用多态 3 public class Master { public void feed( Dog dog ) { dog.eat(); } public void feed( Penguin pgn ) { pgn.eat(); } public void feed( XXX xxx ) { xxx.eat(); } … … } 主人类 … … Master master = new Master(); master.feed(dog); master.feed(penguin); master.feed(xxx); … … 测试方法 频繁修改代码,代码可扩展性、可维护性差,如何优化? 参数都是Pet类的子类 可否使用一个feed(Pet pet)实现对所有宠物的喂食? 使用多态优化设计 为什么使用多态 4 如果再领养XXX宠物,就需要给XXX喂食,怎么办? 添加XXX类,继承Pet类,实现吃食方法 修改Master类,添加给XXX喂食的方法 第八章 多态 第二节 什么是多态? Java程序设计 什么是多态 生活中的多态 不同类型的打印机打印效果不同 程序中的多态 多态:同一个引用类型,使用不同的实例而执行不同操作 父类引用,子类对象 使用同一类事物,由于事物的分类或者使用的条件不同,产生的结果也不同 多态的作用 如果主人不停的领养宠物,就要一直添加方法,有没有一劳永逸的方法? 既然狗、企鹅、兔子等都是宠物类,能不能只写一个函数,该函数接收一个Pet对象作为参数就可以了? Pet类是抽象类,实现eat方法无意义,怎么办? 调用某个Pet类的引用到底调用了谁的方法? 使用父类作为方法形参实现多态 使用多态优化主人给宠物喂食 … … Dog dog = new Dog(); Master master = new Master(); master.feed( dog ); … … public class Master { public void feed( Pet pet ) { } } 主人类 测试方法 同一种操作方式, 不同的操作对象 使用父类作为 方法形参 使用父类作为形式参数,可以接受子类的对象作为实参。 进入到方法之后,该对象仅能当做父类使用,无法访问子类的成员。 到底调用谁的方法 Pet类的eat()方法怎么写? 调用Pet类的eat()方法,之后究竟执行谁的方法? public class Pet { public abstract void eat(); } master.feed( dog ); … … public void feed( Pet pet ) { pet.eat(); } master.feed( pgn ); … … public void feed( Pet pet ) { pet.eat(); } 父类对象引用实际指向的对象是谁,就执行谁的方法。 在C++中,必须使用virtual关键字才能实现多态,Java中,所有方法都是virtual方法。 父类作为返回值 主人无聊的时候想随机地找一只宠物来玩。 使用随机数生成器java.util.Random类 随机数种子的使用 生成随机数的范围nextInt(int n) 如何返回宠物? 父类作为方法返回值 使用多态实现领养宠物 使用父类Pet作为方法返回值 实现思路 首先需要有一个宠物列表 在Master类添加领养方法chooseRandomPet(Pet[] pets)方法 调用随机数生成器,

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档