java基础_多态.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java基础_多态汇编

多态 为什么使用多态 宠物饿了,需要主人给宠物喂食 不同宠物吃的东西不一样 不同宠物恢复后体力值不一样 吃狗粮 吃鱼 狗狗 企鹅 健康值增加3 狗狗 健康值增加5 企鹅 为什么使用多态 如果再领养XXX宠物,就需要给XXX喂食,怎么办? 添加XXX类,继承Pet类,实现吃食方法 修改Master类,添加给XXX喂食的方法 为什么使用多态 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)实现对所有宠物的喂食? 使用多态优化设计 什么是多态 生活中的多态 不同类型的打印机打印效果不同 程序中的多态 多态:同一个引用类型,使用不同的实例而执行不同操作 父类引用,子类对象 同一种事物,由于条件不同,产生的结果也不同 如何实现多态 使用多态实现思路 编写父类 编写子类,子类重写父类方法 运行时,使用父类的类型,子类的对象 实现多态的两个要素 使用父类作为方法形参实现多态 使用父类作为方法返回值实现多态 实现多态的两种形式 使用父类作为方法形参实现多态 使用多态优化主人给宠物喂食 … … Pet pet = new Dog(); Master master = new Master(); master.feed( pet ); … … public class Master { public void feed( Pet pet ) { pet.eat(); } } 主人类 测试方法 同一种操作方式, 不同的操作对象 使用父类作为 方法形参 使用父类作为方法返回值实现多态 使用多态实现领养宠物 使用父类作为方法返回值 实现思路 在Master类添加领养方法getPet(int typeId ) 创建测试类,根据主人选择宠物类型编号来领养宠物 public class Master { public Pet getPet(int typeId ){ … … } } 主人类 使用父类作为 返回值类型 Pet pet =new Dog(); pet.eat(); 多态的形式 自动转换 强制转换 父类与子类之间的转换 向上转型 byte b = 1; int x =b; 子类到父类的转换 Pet pet = new Dog(); 自动类型转换 父类到子类的转换 实现主人与宠物玩耍功能 和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。 和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。 给Dog添加接飞盘方法catchingFlyDisc( ) 给Penguin添加游泳方法swimming( ) 给主人添加play(Pet pet)方法 父类到子类的转换 代码实现 public class Master { public void play(Pet pet){ pet.catchingFlyDisc(); } } public class Penguin extends Pet { public void swimming () { … … } } public class Dog extends Pet { public void catchingFlyDisc() { … … } } 狗狗类 企鹅类 主人类 … … Pet pet = new Dog(); Master master = new Master(); master.pet(pet); … … 测试类 报错,父类引用不能调用子类特有方法 父类到子类的转换 父类到子类的转换 向下转型(强制类型转换) instanceof运算符 Pet pet

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档