java第一阶段课程_第1页
java第一阶段课程_第2页
java第一阶段课程_第3页
java第一阶段课程_第4页
java第一阶段课程_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多态为什么使用多态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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论