java基础_多态资料.ppt

java基础_多态资料.ppt

ID:56471050

大小:172.82 KB

页数:17页

时间:2020-06-19

java基础_多态资料.ppt_第1页
java基础_多态资料.ppt_第2页
java基础_多态资料.ppt_第3页
java基础_多态资料.ppt_第4页
java基础_多态资料.ppt_第5页
资源描述:

《java基础_多态资料.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、多态为什么使用多态宠物饿了,需要主人给宠物喂食不同宠物吃的东西不一样不同宠物恢复后体力值不一样吃狗粮吃鱼狗狗企鹅问题健康值增加3狗狗健康值增加5企鹅为什么使用多态如果再领养XXX宠物,就需要给XXX喂食,怎么办?添加XXX类,继承Pet类,实现吃食方法修改Master类,添加给XXX喂食的方法问题为什么使用多态publicclassMaster{publicvoidfeed(Dogdog){dog.eat();}publicvoidfeed(Penguinpgn){pgn.eat();}publicvoidfeed(XXXxxx){xxx.eat();}……}主人类……

2、Mastermaster=newMaster();master.feed(dog);master.feed(penguin);master.feed(xxx);……测试方法频繁修改代码,代码可扩展性、可维护性差,如何优化?参数都是Pet类的子类可否使用一个feed(Petpet)实现对所有宠物的喂食?使用多态优化设计什么是多态生活中的多态不同类型的打印机打印效果不同程序中的多态多态:同一个引用类型,使用不同的实例而执行不同操作父类引用,子类对象同一种事物,由于条件不同,产生的结果也不同黑白打印机彩色打印机打印如何实现多态使用多态实现思路编写父类编写子类,子类重写父类方法

3、运行时,使用父类的类型,子类的对象实现多态的两个要素使用父类作为方法形参实现多态使用父类作为方法返回值实现多态实现多态的两种形式使用父类作为方法形参实现多态使用多态优化主人给宠物喂食……Petpet=newDog();Mastermaster=newMaster();master.feed(pet);……publicclassMaster{publicvoidfeed(Petpet){pet.eat();}}主人类测试方法同一种操作方式,不同的操作对象使用父类作为方法形参使用父类作为方法返回值实现多态使用多态实现领养宠物使用父类作为方法返回值实现思路在Master类添加

4、领养方法getPet(inttypeId )创建测试类,根据主人选择宠物类型编号来领养宠物publicclassMaster{publicPetgetPet(inttypeId ){……}}主人类使用父类作为返回值类型Petpet=newDog();pet.eat();多态的形式自动转换强制转换父类与子类之间的转换向上转型byteb=1;intx=b;子类到父类的转换Petpet=newDog();自动类型转换父类到子类的转换实现主人与宠物玩耍功能和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。给

5、Dog添加接飞盘方法catchingFlyDisc( )给Penguin添加游泳方法swimming( )给主人添加play(Petpet)方法问题分析父类到子类的转换代码实现publicclassMaster{publicvoidplay(Petpet){pet.catchingFlyDisc();}}publicclassPenguinextendsPet{publicvoidswimming(){……}}publicclassDogextendsPet{publicvoidcatchingFlyDisc(){……}}狗狗类企鹅类主人类……Petpet=newDog

6、();Mastermaster=newMaster();master.pet(pet);……测试类报错,父类引用不能调用子类特有方法父类到子类的转换父类到子类的转换向下转型(强制类型转换)instanceof运算符Petpet=newDog("欧欧","雪娜瑞");Dogdog=(Dog)pet;Penguinpng=(Penguin)pet;报错,必须转换为父类指向的真实子类类型语法对象instanceof类或接口经验instanceof通常和强制类型转换结合使用父类到子类的转换优化主人与宠物玩耍publicclassMaster{publicvoidplay(Pet

7、pet){if(petinstanceofDog){//如果传入的是狗狗Dogdog=(Dog)pet;dog.catchingFlyDisc();}elseif(petinstanceofPenguin){//如果传入的是企鹅Penguinpgn=(Penguin)pet;pgn.swimming();}}}主人类小结实现多态有哪两个要素?使用的多态有什么好处?提问

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。