ImageVerifierCode 换一换
格式:PPT , 页数:28 ,大小:829.50KB ,
资源ID:3723063      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3723063.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java程序设计116PPT课件.ppt)为本站会员(Facebook)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java程序设计116PPT课件.ppt

1、第四章,(三)多态,回顾及作业点评,实现继承的关键字是什么? 使用继承有什么好处? 子类继承父类后,如何调用父类的属性和方法? 什么是抽象类?,预习检查,什么是多态? 使用多态有什么好处?,本章任务,通过多态实现主人给宠物喂食功能 通过多态实现主人与宠物玩耍功能 通过多态计算汽车租赁的总租金,掌握多态的优势和应用场合 掌握父类和子类之间的类型转换 掌握instanceof运算符的使用 使用父类作为方法形参实现多态,本章目标,为什么使用多态5-1,宠物生病了,需要主人给宠物看病 不同宠物看病过程不一样不同宠物恢复后体力值不一样,打针,吃药,吃药,疗养,狗狗,Q仔,为什么使用多态5-2,编写主人类

2、 编写给狗狗看病的方法 编写给Q仔看病的方法 编写测试方法 调用主人类给狗狗看病的方法 调用主人类给Q仔看病的方法,为什么使用多态5-3,编码实现,public class Master public void Cure(Dog dog) if (dog.getHealth() 50) dog.setHealth(60);System.out.println(“打针、吃药“);public void Cure(Penguin penguin)if (penguin.getHealth() 50) penguin.setHealth(70);System.out.println(“吃药、疗养“)

3、; ,主人类, Master master = new Master(); master.Cure(dog); master.Cure(penguin); ,测试方法,为什么使用多态5-4,如果又需要给XXX看病,怎么办? 添加XXX类,继承Pet类 修改Master类,添加给XXX看病的方法,使用多态优化设计,频繁修改代码,代码可扩展性、可维护性差,为什么使用多态5-5,使用多态优化后的代码, Pet pet = new Dog(); Master master = new Master(); master.Cure(pet); ,测试方法,public class Dog extends

4、Pet public void toHospital() this.setHealth(60);System.out.println(“打针、吃药“); ,public class Penguin extends Pet public void toHospital() this.setHealth(70);System.out.println(“吃药、疗养“); ,public class Master public void Cure(Pet pet) if (pet.getHealth() 50)pet.toHospital(); ,主人类,Dog类,Penguin类,1,2,3,4,又

5、要给XXX看病时,只需: 1. 编写XXX类继承Pet类(旧方案也需要) 2. 创建XXX类对象(旧方案也需要) 3. 其他代码不变(不用修改Master类),什么是多态,生活中的多态 你能列举出一个多态的生活示例吗?程序中的多态,多态:同一个引用类型,使用不同的实例而执行不同操作,父类引用,子类对象,同一种事物,由于条件不同,产生的结果也不同,如何实现多态3-1,用多态实现打印机 分为黑白打印机和彩色打印机 不同类型的打印机打印效果不同,黑白打印机,彩色打印机,打印,如何实现多态3-2,使用多态实现思路 编写父类 编写子类,子类重写父类方法 运行时,使用父类的类型,子类的对象,计算机可以连接

6、各种打印机,无论连接何种打印机打印方法都相同,根据连接打印机不同,效果也不同,如何实现多态3-3,编码实现,实现多态的两个要素: 1. 方法重写 2. 使用父类类型,abstract class Printer()print(String str); ,class ColorPrinter ()print(String str) System.out.println(“输出彩色的“+str); ,class BlackPrinter ()print(String str) System.out.println(“输出黑白的“+str); ,public static void main(Str

7、ing args) Printer p = new ColorPrinter();p.print();p = new BlackPrinter();p.print(); ,父类,子类,运行,同一种操作方式,不同的操作对象,只能调用父类已经定义的方法,方法重写,方法重写的规则 在继承关系的子类中 重写的方法名、参数、返回值类型必须与父类相同 私有方法不能继承因而也无法重写,方法重写,方法重载,VS,instanceof运算符,该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false 在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异

8、常,从而提高代码健壮性,对象 instanceof 类或接口,/* 测试instanceof运算符的使用。* author 北大青鸟*/ public class TestPoly2 public static void main(String args) Pet pet = new Penguin(“楠楠“, “Q妹“);/ Pet pet = new Dog(“欧欧“, “雪娜瑞“);pet.eat();if (pet instanceof Dog) Dog dog = (Dog) pet;dog.catchingFlyDisc(); else if (pet instanceof Pen

9、guin) Penguin pgn = (Penguin) pet;pgn.swimming(); ,/* 测试instanceof运算符的使用。* author 北大青鸟*/ public class TestPoly2 public static void main(String args) / Pet pet = new Penguin(“楠楠“, “Q妹“);Pet pet = new Dog(“欧欧“, “雪娜瑞“);pet.eat();if (pet instanceof Dog) Dog dog = (Dog) pet;dog.catchingFlyDisc(); else if

10、 (pet instanceof Penguin) Penguin pgn = (Penguin) pet;pgn.swimming(); ,注释创建Penguin 对象语句,取消创建Dog对象语句的注释,指导实现喂养宠物功能2-1,训练要点: 子类到父类的自动类型转换 使用父类作为方法形参实现多态 多态可以减少代码量,可以提高代码的可扩展性和可维护性 需求说明: 实现喂养宠物功能 不同宠物吃的东西不同 主人可以喂养不同类型宠物,讲解需求说明,指导实现喂养宠物功能2-2,实现思路: 在Pet类添加吃饭的抽象方法 子类实现吃饭方法 Master类编写喂养方法,使用Pet类型作为参数 运行时,调用

11、喂养方法时,传递一个子类的对象,public class Pet protected abstract void eat(); ,public Pet feed (Pet pet)pet.eat(); ,public class Dog extends Pet public void eat()super.health = super.health + 3; ,Pet类,Dog类,Master类,完成时间:25分钟,练习实现与宠物玩耍功能,需求说明: 主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5 主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加5 提示: Dog类添

12、加catchingFlyDisc()方法,实现接飞盘功能 Penguin类添加swimming()方法,实现游泳功能 主人添加play(Pet pet)方法 如果pet代表Dog就玩接飞盘游戏 如果pet代表Penguin就玩游泳游戏,完成时间:25分钟,小结,什么是多态? 使用的多态有什么好处?,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,指导计算总租金2-1,训练要点: 多态的使用 使用父类类型作为方法参数 需求说明: 在前面汽车租赁系统的基础上,实现计算多种车辆总租金的功能 现在有客户租用: 2辆宝马 1辆别克商务舱 1辆金龙(34)座 租5天共多少租金?,

13、讲解需求说明,指导计算总租金2-2,实现思路:,完成时间:35分钟,MotoVehile motos = new MotoVehile4; motos0 = new Car(“宝马550i“,“京NY28588“); motos1 = new Car(“宝马550i“,“京NNN328“); motos2 = new Car(“别克林荫大道“,“京NY28588“); motos3 = new Bus(“金龙“,34);,1、创建车的对象,放在数组中,CalcTotalRent(MotoVehile motos)double totalRent = 0.0D; for(int i=0;imot

14、os.length;+i)totalRent += motosi.CalRent(5); return totalRent; ,2、循环调用CalcRent方法,计算总租金,小结,为什么可以实现这样的效果? 再次理解什么是多态? 再次理解多态有什么好处?,指导购置新车2-1,训练要点: 使用父类作为方法形参实现多态 使用多态增强系统的扩展性和可维护性 需求说明: 新购置了卡车,根据吨位,租金每吨每天50 对系统进行扩展,计算汽车租赁的总租金,讲解需求说明,指导购置新车2-2,实现思路,完成时间:30分钟,1、创建卡车类,实现CalcRent,2、修改统计租金代码,提前做完的同学可以尝试改进系统: 1. 循环从控制台选择汽车种类 2. 从控制台输入天数 3. 累加计算总租金,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,总结,什么是多态? 为什么需要多态? 什么地方使用多态?,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报