版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多态为什么使用多态5-1宠物饿了,需要主人给宠物喂食吃狗粮吃鱼–不同宠物狗吃狗的东西不一样企鹅问题健康值增加3健康值增加5–不同宠物狗恢狗复后体力值不一样企鹅2/30为什么使用多态5-2狗狗类增加狗狗吃食的方法企鹅类增加企鹅吃食的方法创建主人类编写给狗狗喂食的方法编写给企鹅喂食的方法编写测试方法调用主人类给狗狗喂的方法调用主人类给企鹅喂的方法分析3/30为什么使用多态5-4如果再领养XXX宠物,就需要给XXX看病,怎么办?添加XXX类,继承Pet类,实现吃食方法修改Master类,添加给XXX喂食的方法问题4/30为什么使用多态5-3public
class
Master
{ed(
Dog
dog
)
{public
void
fedog.eat();}publicvoid
feed(Penguin
pgn
)
{pgn.eat();}public
voidfeed(
XXX
xxx
){xxx.eat();}…
…}主人类…
…Master
master
=
new
Master();master.feed(dog);…
…测试方法频繁修改代码,代码可扩展性、可维护性差,如何优化?mast参er.数fee都d(p是enPgeutin类);的子类master.feed(xxx);可否使用一个feed(Pet
pet)实现对所有宠物的喂食?使用多态优化设计5/30什么是多态生活中的多态–不同类型的打印机打印效果不同程序中的多态多态:同一个引用类型,使用不同的实例而执行不同操作父类引用,子类对象黑白打印机彩色打印机同一种事物,由于条件不同,产生的结果也不同打印6/30使用父类作为方法形参实现多态使用多态优化主人给宠物喂食…
…Pet
pet
=
new
Dog();Master
master
=
new
Master();master.feed(
pet
);…
…public
class
Master
{public
void
feed(
Pet
pet
)
{pet.eat();}}主人类测试方法演示示例2:使用多态实现给宠物喂食同一种操作方式,不同的操作对象使用父类作为方法形参7/30学员操作——使用多态实现主人给宠物喂食需求说明使用多态实现喂养宠物功能增加宠物猫并喂食,其健康值增加4练习8/30使用父类作为方法返回值实现多态使用多态实现领养宠物使用父类作为方法返回值实现思路在Master类添加领养方法getPet(String
typeId)编号来领养宠建测试类,根据主人选择宠物类型创物public
class
Master
{public
Pet
getPet(StringtypeId
){…
…}}主人类使用父类作为返回值类型9/30父类到子类的转换4-1实现主人与宠物玩耍功能和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。给Dog添加接飞盘方法catchingFlyDisc()给Penguin添加游泳方法swimming()给主人添加play(Pet
pet)方法问题分析10/30父类到子类的转换4-2代码实现public
class
Master
{public
void
play(Pet
pet){pet.catchingFlyDisc();}}public
class
Penguin
extends
Pet
{public
void
swimming
()
{…
…}}public
class
Dogextends
Pet
{publicvoid
catchingFlyDisc(){…
…}}狗狗类企鹅类主人类…
…Pet
pet
=
new
Dog();Master
master
=
new
Master();master.pet(pet);…
…测试类报错,父类引用不能调用子类特有方法11/30父类到子类的转换4-3•父类到子类的转换–
向下转型(强制类型转换)•instanceof运算符Pet
pet=new
Dog("欧欧","雪娜瑞");Dog
dog=(Dog)pet;Penguin
png
=
(Penguin)
pet;报错,必须转换为父类指向的真实子类类型语法对象
instanceof
类或接口经验instanceof通常和强制类型转换结合使用12/30父类到子类的转换4-4优化主人与宠物玩耍//如果传入的是狗狗public
class
Master
{public
void
play(Pet
pet){if
(pet
instanceof
Dog)
{Dog
dog
=
(Dog)
pet;//如果传入的是企鹅dog.catchingFlyDisc();}else
if
(pet
instanceof
Penguin)
{Penguin
pgn
=
(Penguin)
pet;pgn.swimming();}}}主人类演示示例4:使用多态实现主人与宠物玩耍13/30学员操作——使用多态实现主人领养宠物并与宠物玩耍练习需求说明:主人根据宠物编号领养宠物主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加514/30学员操作——计算一次租赁多辆汽车的总租金2-1指导训练要点:多态的使用使用父类类型作为方法参数需求说明:在前面汽车租赁系统的基础上,实现计算多种车辆总租金的功能现在有客户租用2辆宝马1辆别克商务舱1辆金龙(34)座租5天共多少租金?15/30学员操作——计算一次租赁多辆汽车的总租金2-1现思路:}1、创建车的对象,放在数组中实MotoVehile[]motos=newMotoVehile[4];motos[0]=new
Car("宝马550i","京NY28588");motos[1]=new
Car("宝马550i","京NNN328");motos[2]=new
Car("别克林荫大道","京NY28588");motos[3]=new
Bus("金龙",34);2、循环调用calcRent()方法,计算总租金public
int
calcTotalRent(MotoVehile[]
motos,int
days){int
totalRent
=
0;for(int
i=0;i<motos.length;++i){totalRent
+=
motos[i].calRent(days);}return
totalRent;指导完成时间:25分钟16/30学员操作——购置新车2-1训练要点:使用父类作为方法形参实现多态使用多态增强系统的扩展性和可维护性需求说明:新购置了卡车,根据吨位,租金每吨每天50对系统进行扩展,计算汽车租赁的总租金指导17/30学员操作——购置新车2-2实现思路创建卡车类,实现calcRent()方法修改统计租金代码提前做完的同学可以尝试改进系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职药品质量与安全(药品检验)试题及答案
- 2025年高职(动物科学)动物营养期末测试试题及答案
- 2025年高职第二学年(石油化工技术)石油化工设备基础测试题及答案
- 2025年大学二年级(智能视听工程)音频技术综合测试题及答案
- 2025年中职烹饪工艺与营养(中式面点制作)试题及答案
- 逗女孩开心的搞笑祝福语大全
- 中国移动廉洁培训课件
- 养老院老人生活设施维修人员行为规范制度
- 养老院老人意外伤害处理制度
- 养老院服务质量监督与投诉处理制度
- 国网 35kV~750kV输电线路基础通 用设计模块清单(试行) 2024
- 2025内河散装运输液化气体船舶构造与设备规范
- JJG 579-2025验光镜片箱检定规程
- 福建省福州市2024-2025学年九年级上学期期末化学试题(含答案)
- 贵州省遵义市2024-2025学年九年级上学期期末学业水平监测化学试题
- 临床诊断学:尿频、尿急、尿痛
- JBT 12530.2-2015 塑料焊缝无损检测方法 第2部分:目视检测
- 养老院年终工作总结
- 加减乘除课件
- 我的家人初中写人记事作文600字10篇
- 2022公务员录用体检操作手册(试行)
评论
0/150
提交评论