java基础_多态.pptx

上传人:good****022 文档编号:116738120 上传时间:2022-07-06 格式:PPTX 页数:17 大小:172.82KB
返回 下载 相关 举报
java基础_多态.pptx_第1页
第1页 / 共17页
java基础_多态.pptx_第2页
第2页 / 共17页
java基础_多态.pptx_第3页
第3页 / 共17页
点击查看更多>>
资源描述
多态,为什么使用多态,宠物饿了,需要主人给宠物喂食 不同宠物吃的东西不一样 不同宠物恢复后体力值不一样,吃狗粮,吃鱼,狗狗,企鹅,问题,健康值增加3,狗狗,健康值增加5,企鹅,为什么使用多态,如果再领养XXX宠物,就需要给XXX喂食,怎么办? 添加XXX类,继承Pet类,实现吃食方法 修改Master类,添加给XXX喂食的方法,问题,为什么使用多态,public class Master public void feed( Dog dog ) dog.eat(); public void feed( Penguin pgn ) pgn.eat(); public void feed( XXX xxx ) xxx.eat(); ,主人类, Master master = new Master(); master.feed(dog); master.feed(penguin); master.feed(xxx); ,测试方法,频繁修改代码,代码可扩展性、可维护性差,如何优化?,参数都是Pet类的子类,可否使用一个feed(Pet pet)实现对所有宠物的喂食?,使用多态优化设计,什么是多态,生活中的多态 不同类型的打印机打印效果不同 程序中的多态,多态:同一个引用类型,使用不同的实例而执行不同操作,父类引用,子类对象,同一种事物,由于条件不同,产生的结果也不同,黑白打印机,彩色打印机,打印,如何实现多态,使用多态实现思路 编写父类 编写子类,子类重写父类方法 运行时,使用父类的类型,子类的对象,实现多态的两个要素,使用父类作为方法形参实现多态 使用父类作为方法返回值实现多态,实现多态的两种形式,使用父类作为方法形参实现多态,使用多态优化主人给宠物喂食, Pet pet = new Dog(); Master master = new Master(); master.feed( pet ); ,public class Master public void feed( Pet pet ) pet.eat(); ,主人类,测试方法,同一种操作方式, 不同的操作对象,使用父类作为 方法形参,使用父类作为方法返回值实现多态,使用多态实现领养宠物 使用父类作为方法返回值 实现思路 在Master类添加领养方法getPet(int typeId) 创建测试类,根据主人选择宠物类型编号来领养宠物,public class Master public Pet getPet(int typeId) ,主人类,使用父类作为 返回值类型,Pet pet =new Dog(); pet.eat();,多态的形式,自动转换 强制转换,父类与子类之间的转换,向上转型 byte b = 1; int x =b;,子类到父类的转换,Pet pet = new Dog();,自动类型转换,父类到子类的转换,实现主人与宠物玩耍功能 和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。 和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。 给Dog添加接飞盘方法catchingFlyDisc() 给Penguin添加游泳方法swimming() 给主人添加play(Pet pet)方法,问题,分析,父类到子类的转换,代码实现,public class Master public void play(Pet pet) pet.catchingFlyDisc(); ,public class Penguin extends Pet public void swimming () ,public class Dog extends Pet public void catchingFlyDisc() ,狗狗类,企鹅类,主人类, Pet pet = new Dog(); Master master = new Master(); master.pet(pet); ,测试类,报错,父类引用不能调用子类特有方法,父类到子类的转换,父类到子类的转换 向下转型(强制类型转换) instanceof运算符,Pet pet = new Dog(欧欧, 雪娜瑞); Dog dog = (Dog) pet; Penguin png = (Penguin) pet;,报错,必须转换为父类指向的真实子类类型,语法,对象 instanceof 类或接口,经验,instanceof通常和强制类型转换结合使用,父类到子类的转换,优化主人与宠物玩耍,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(); ,主人类,小结,实现多态有哪两个要素? 使用的多态有什么好处?,提问,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 英语学习


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!