Java基础多态实用教案

上传人:cl****1 文档编号:568584723 上传时间:2024-07-25 格式:PPT 页数:32 大小:1.11MB
返回 下载 相关 举报
Java基础多态实用教案_第1页
第1页 / 共32页
Java基础多态实用教案_第2页
第2页 / 共32页
Java基础多态实用教案_第3页
第3页 / 共32页
Java基础多态实用教案_第4页
第4页 / 共32页
Java基础多态实用教案_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Java基础多态实用教案》由会员分享,可在线阅读,更多相关《Java基础多态实用教案(32页珍藏版)》请在金锄头文库上搜索。

1、回顾(hug)及作业点评实现继承( jchng)的关键字是什么?使用继承( jchng)有什么好处?子类继承( jchng)父类后,如何调用父类的属性和方法?什么是抽象类?第1页/共31页第一页,共32页。预习(yx)检查什么(shnme)是多态?使用多态有什么(shnme)好处?第2页/共31页第二页,共32页。本章(bnzhn)任务通过多态实现主人给宠物喂食功能(gngnng)通过多态实现主人与宠物玩耍功能(gngnng)通过多态计算汽车租赁的总租金第3页/共31页第三页,共32页。掌握多态的优势和应用场合掌握父类和子类之间的类型转换掌握instanceof运算符的使用使用父类作为方法(f

2、ngf)形参实现多态本章(bnzhn)目标第4页/共31页第四页,共32页。为什么使用(shyng)多态5-1宠物(chnw)生病了,需要主人给宠物(chnw)看病不同宠物(chnw)看病过程不一样不同宠物(chnw)恢复后体力值不一样 打针(d zhn) 吃肉 吃药 泡温泉 狗狗 Q仔 第5页/共31页第五页,共32页。为什么使用(shyng)多态5-2编写主人类(rnli)编写给狗狗看病的方法编写给Q仔看病的方法编写测试方法调用主人类(rnli)给狗狗看病的方法调用主人类(rnli)给Q仔看病的方法第6页/共31页第六页,共32页。为什么使用(shyng)多态5-3编码(binm)实现pu

3、blic class Master public void Cure(Dog dog) if (dog.getHealth() 50) dog.setHealth(60); System.out.println(打针(d zhn)、吃药); public void Cure(Penguin penguin) if (penguin.getHealth() 50) penguin.setHealth(70); System.out.println(吃药、疗养); 主人类 Master master = new Master();master.Cure(dog);master.Cure(pengu

4、in); 测试方法 第7页/共31页第七页,共32页。为什么使用(shyng)多态5-4如果又需要给XXX看病,怎么办?添加XXX类,继承( jchng)Pet类修改Master类,添加给XXX看病的方法 使用(shyng)多态优化设计 频繁修改代码,代码可扩展性、可维护性差 第8页/共31页第八页,共32页。为什么使用(shyng)多态5-5使用(shyng)多态优化后的代码 Pet pet = new Dog();Master master = new Master();master.Cure(pet); 测试方法 public class Dog extends Pet public v

5、oid toHospital() this.setHealth(60); System.out.println(打针(d zhn)、吃药); 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类 1234又要给XXX看病时,只需:1

6、. 编写XXX类继承Pet类(旧方案也需要)2. 创建XXX类对象(旧方案也需要) 3. 其他代码不变(不用修改Master类)第9页/共31页第九页,共32页。什么(shnme)是多态生活中的多态你能列举出一个多态的生活示例(shl)吗?程序中的多态多态:相同的父类引用,不同的子类实例,执行(zhxng)相同的行为,产生不同的结果 父类引用,子类对象 同一种事物,由于条件不同,产生的结果也不同第10页/共31页第十页,共32页。如何(rh)实现多态3-1用多态实现打印机分为黑白打印机和彩色打印机不同(btn)类型的打印机打印效果不同(btn)黑白打印机 彩色打印机 打印打印第11页/共31页

7、第十一页,共32页。如何(rh)实现多态3-2使用多态实现思路编写父类编写子类,子类重写父类方法运行(ynxng)时,使用父类的类型,子类的对象计算机可以连接(linji)各种打印机 无论连接何种打印机打印方法都相同 根据连接打印机不同,效果也不同 第12页/共31页第十二页,共32页。如何(rh)实现多态3-3编码(binm)实现 实现多态的两个要素:1. 方法重写 2. 使用(shyng)父类类型abstract class Printer() print(String str);class ColorPrinter () print(String str) System.out.prin

8、tln(输出彩色的+str); class BlackPrinter () print(String str) System.out.println(输出黑白的+str); public static void main(String args) Printer p = new ColorPrinter(); p.print(); p = new BlackPrinter(); p.print();父类 子类 运行 同一种操作方式,不同的操作对象 只能调用父类已经定义的方法 第13页/共31页第十三页,共32页。方法(fngf)重写方法重写的规则在继承关系的子类中重写的方法名、参数、返回值类型

9、必须与父类相同私有方法不能继承因而(ynr)也无法重写 位置位置 方法名方法名 参数表参数表 返回值返回值访问修饰符访问修饰符方法重写方法重写子类子类相同相同相同相同相同相同不能比父类更严格不能比父类更严格方法重载方法重载同类同类相同相同不同不同无关无关无关无关 方法(fngf)重写 方法重载 VS第14页/共31页第十四页,共32页。instanceof运算符该运算符用来判断一个对象是否(shfu)属于一个类或者实现了一个接口,结果为true或false在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码健壮性对象(duxing) insta

10、nceof 类或接口/* * 测试(csh)instanceof运算符的使用。 */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 Penguin) Penguin pgn = (Penguin) p

11、et; pgn.swimming(); /* * instanceof运算符的使用(父转子不安全) */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 Penguin) Penguin pgn = (

12、Penguin) pet; /父转子不安全 pgn.swimming(); 注释创建Penguin 对象语句,取消创建Dog对象语句的注释第15页/共31页第十五页,共32页。共性问题集中(jzhng)讲解n常见调试常见调试(dio sh)问题及解决办法问题及解决办法n代码规范问题代码规范问题共性问题集中(jzhng)讲解第16页/共31页第十六页,共32页。指导实现喂养(wiyng)宠物功能2-1训练要点:子类到父类的自动类型转换使用父类作为方法形参实现多态多态可以减少代码量,可以提高代码的可扩展性和可维护性需求说明:实现喂养宠物功能不同宠物吃的东西不同主人(zhrn)可以喂养不同类型宠物讲

13、解需求(xqi)说明第17页/共31页第十七页,共32页。指导实现喂养(wiyng)宠物功能2-2实现思路:在Pet类添加吃饭的抽象方法(fngf)子类实现吃饭方法(fngf)Master类编写喂养方法(fngf),使用Pet类型作为参数运行时,调用喂养方法(fngf)时,传递一个子类的对象public class Pet protected abstract void eat();public void feed (Pet pet) pet.eat();public class Dog extends Pet public void eat() super.health = super.he

14、alth + 3; Pet类 Dog类 Master类 完成(wn chng)时间:25分钟第18页/共31页第十八页,共32页。练习实现与宠物(chnw)玩耍功能需求说明:主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加5提示(tsh):Dog类添加catchingFlyDisc()方法,实现接飞盘功能Penguin类添加swimming()方法,实现游泳功能主人添加play(Petpet)方法如果pet代表Dog就玩接飞盘游戏如果pet代表Penguin就玩游泳游戏完成(wn chng)时间:25分钟第19页/共31页

15、第十九页,共32页。小结(xioji)什么是多态?使用(shyng)的多态有什么好处?第20页/共31页第二十页,共32页。共性(gngxng)问题集中讲解n常见调试常见调试(dio sh)问题及解决办法问题及解决办法n代码规范问题代码规范问题共性(gngxng)问题集中讲解第21页/共31页第二十一页,共32页。指导计算(jsun)总租金2-1训练要点:多态的使用使用父类类型作为方法参数需求说明:在前面汽车(qch)租赁系统的基础上,实现计算多种车辆总租金的功能现在有客户租用:2辆宝马1辆别克商务舱1辆金龙(34)座租5天共多少租金?讲解需求(xqi)说明第22页/共31页第二十二页,共32

16、页。指导计算(jsun)总租金2-2实现(shxin)思路:完成(wn chng)时间: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;imotos.l

17、ength;+i) totalRent += motosi.CalRent(5); return totalRent;2、循环调用CalcRent方法,计算总租金 第23页/共31页第二十三页,共32页。共性问题集中(jzhng)讲解n常见调试常见调试(dio sh)问题及解决办法问题及解决办法n代码规范问题代码规范问题共性问题集中(jzhng)讲解第24页/共31页第二十四页,共32页。小结(xioji)为什么可以实现(shxin)这样的效果?再次理解什么是多态?再次理解多态有什么好处?第25页/共31页第二十五页,共32页。指导(zhdo)购置新车2-1训练要点:使用父类作为方法形参实现多

18、态使用多态增强系统的扩展性和可维护性需求说明:新购置了卡车,根据吨位,租金(zjn)每吨每天50对系统进行扩展,计算汽车租赁的总租金(zjn)讲解(jingji)需求说明第26页/共31页第二十六页,共32页。指导(zhdo)购置新车2-2实现(shxin)思路完成(wn chng)时间:30分钟1、创建卡车类,实现CalcRent 2、修改统计租金代码 提前做完的同学可以尝试改进系统:1. 循环从控制台选择汽车种类2. 从控制台输入天数3. 累加计算总租金第27页/共31页第二十七页,共32页。共性(gngxng)问题集中讲解n常见常见(chn jin)调试问题及解决办法调试问题及解决办法n

19、代码规范问题代码规范问题共性问题集中(jzhng)讲解第28页/共31页第二十八页,共32页。总结(zngji)什么是多态?为什么需要(xyo)多态?什么地方使用多态?第29页/共31页第二十九页,共32页。谢谢 谢!谢!第30页/共31页第三十页,共32页。谢谢(xi xie)大家观赏!第31页/共31页第三十一页,共32页。内容(nirng)总结回顾及作业点评。第2页/共31页。第4页/共31页。第5页/共31页。添加XXX类,继承Pet类。1. 编写XXX类继承Pet类(旧方案(fng n)也需要)。如何实现多态3-3。重写的方法名、参数、返回值类型必须与父类相同。该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false。/*。/父转子不安全。第30页/共31页。谢谢大家观赏第三十二页,共32页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号