深入理解多态.pptx
《深入理解多态.pptx》由会员分享,可在线阅读,更多相关《深入理解多态.pptx(33页珍藏版)》请在咨信网上搜索。
第五单元(四)第五单元(四)第五单元(四)第五单元(四)深入理解多态深入理解多态回顾与作业点评在子类中访问父类成员的关键字是什么?在子类中访问父类成员的关键字是什么?方法重载和方法重写的区别?方法重载和方法重写的区别?笔记本支持用户使用电池笔记本支持用户使用电池(AcPower)和电源和电源(Battery)两两种方式进行供电种方式进行供电使用多态性输出目前笔记本的电源供电情况使用多态性输出目前笔记本的电源供电情况“XX供电中供电中”参考答案参考答案预习检查子类中定义抽象类的关键字是什么?子类中定义抽象类的关键字是什么?as关键字的作用?关键字的作用?本章任务使用使用OO思想思想实现员工器乐演奏实现员工器乐演奏实现员工执行工作列表、查看工作指标完成情况实现员工执行工作列表、查看工作指标完成情况实现饲养员给不同动物喂食实现饲养员给不同动物喂食理解里氏替换原则理解里氏替换原则会使用父类类型作为参数会使用父类类型作为参数理解抽象类和抽象方法理解抽象类和抽象方法理解虚方法和抽象方法的区别理解虚方法和抽象方法的区别本章目标里氏替换原则/SE ai=new SE();SE joe=new SE();PM gates=new PM();List empls=new List();empls.Add(ai);empls.Add(joe);empls.Add(gates);/子类可以替换父类子类可以替换父类里氏替换原则(里氏替换原则(LSP)在一个软件系统中,子类对象可以替换所有使用的父在一个软件系统中,子类对象可以替换所有使用的父类对象,且程序行为没有变化类对象,且程序行为没有变化里氏替换原则的应用一个鸟类,一个鸵鸟类,如果鸟可以飞,鸵鸟类一个鸟类,一个鸵鸟类,如果鸟可以飞,鸵鸟类可以继承鸟类吗?可以继承鸟类吗?如果鸵鸟类继承鸟类,如果鸵鸟类继承鸟类,违反违反“鸵鸟会飞鸵鸟会飞”根据根据LSP原则:软件设计时,鸵鸟类不能继承鸟类原则:软件设计时,鸵鸟类不能继承鸟类is与as操作符is 检查对象是否与指定类型兼容检查对象是否与指定类型兼容if(emplsi is SE)判断判断empl集合的元素是否集合的元素是否是是SE对象对象as 用于在兼容的引用类型之间执行转换用于在兼容的引用类型之间执行转换 for(int i=0;i empls.Count;i+)if(emplsi is SE)SE se=emplsi as SE;Console.WriteLine(se.SayHi();一种类型转换方式一种类型转换方式转换失败返回值为空转换失败返回值为空多态的应用2-1某公司员工回家,可以选择不同交通工具(小某公司员工回家,可以选择不同交通工具(小汽车、地铁、自行车),每种交通工具具有行汽车、地铁、自行车),每种交通工具具有行驶的行为,编程模拟员工回家的过程驶的行为,编程模拟员工回家的过程多态的应用2-2交通工具具有继承关系交通工具具有继承关系GoHome(TrafficTool tool)演示示例:多态的应用演示示例:多态的应用父类类型作为参数父类类型作为参数父类类型作为参数2-1实现交通工具继承关系实现交通工具继承关系public class TrafficTool public virtual void Run()Console.WriteLine(车在行使!车在行使!);public class Car:TrafficTool public override void Run()Console.WriteLine(小汽车在行使!小汽车在行使!);父类类型作为参数2-2实现员工回家实现员工回家public class Employee .public void GoHome(TrafficTool tool)Console.WriteLine(员工:员工:+this.Name);tool.Run();List empls=new List();empls.Add(ai);empls.Add(joe);/员工选择不同交通工具回家员工选择不同交通工具回家empls0.GoHome(new Bicycle();empls1.GoHome(new Tube();父类作为参数使用,可父类作为参数使用,可接受多种子类类型接受多种子类类型传递实际创建的子类对传递实际创建的子类对象,象,tool.Run()执行相执行相应子类的应子类的Run()小结实现多态的步骤:实现多态的步骤:子类重写父类的方法子类重写父类的方法两种方式两种方式创建父类变量,实例化子类对象创建父类变量,实例化子类对象把父类类型作为参数类型,该子类及子类对象作为参数传入把父类类型作为参数类型,该子类及子类对象作为参数传入运行时,根据实际创建的对象决定执行哪个方法运行时,根据实际创建的对象决定执行哪个方法指导实现器乐演奏训练要点训练要点父类类型作为参数父类类型作为参数需求说明需求说明公司举办器乐大赛,员工可以选择不同的乐器进行公司举办器乐大赛,员工可以选择不同的乐器进行演奏,模拟演奏过程演奏,模拟演奏过程难点分析难点分析不同器乐继承自不同器乐继承自Instrument类类员工具有员工具有Play(乐器类型乐器类型)方法方法public void Play(Instrument XX)XX.Play();支持传入多种子类对象,避免为支持传入多种子类对象,避免为每一个子类类型编写方法每一个子类类型编写方法完成时间:完成时间:25分钟分钟共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解为什么需要抽象方法public class TrafficTool public virtual void Run()Console.WriteLine(车在行使!车在行使!);交通工具类是抽象的概念,根交通工具类是抽象的概念,根本不可能实例化,本不可能实例化,Run()方法方法不具有实际意义!不具有实际意义!public abstract class TrafficTool public abstract void Run();使用使用抽象类、抽象方法抽象类、抽象方法优化程序优化程序 public abstract class TrafficTool public abstract void Run();抽象类和抽象方法抽象方法抽象方法 一个没有实一个没有实现的方法现的方法有抽象方法的类必然是抽象类有抽象方法的类必然是抽象类抽象类用来列举一个类所需要的行为抽象类用来列举一个类所需要的行为抽象类不明确提供具体实现方法抽象类不明确提供具体实现方法抽象类必须由其子类实现它的抽象方法(除非抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性)子类也具有抽象性)常见错误抽象类不能被实例化抽象类不能被实例化抽象类不能是静态的抽象类不能是静态的TrafficTool tool=new TrafficTool();编译错误编译错误抽象类不能用抽象类不能用static修饰修饰实现抽象方法使用使用override实现抽象方法实现抽象方法class Tube:TrafficTool public override void Run()Console.WriteLine(地铁运行中!地铁运行中!);重写重写 必须实现抽象父类必须实现抽象父类中的抽象方法中的抽象方法演示示例:抽象类和抽象方法演示示例:抽象类和抽象方法抽象类的实际应用3-1实现员工执行工作列表、查看工作指标完成情实现员工执行工作列表、查看工作指标完成情况况不同工作执行的指标项不同,不同工作执行的指标项不同,因此窗体不同因此窗体不同抽象类的实际应用3-2工作类型有很多且执行指标不同工作类型有很多且执行指标不同编码、测试、审核编码、测试、审核模拟执行工作,模拟执行工作,显示对应类型工显示对应类型工作窗体作窗体显示工作完显示工作完成情况成情况测试类型工测试类型工作特有指标作特有指标编码类型工编码类型工作特有指标作特有指标抽象类的实际应用3-3public abstract class Job .定义公共属性定义公共属性./执行执行 public abstract void Execute();/显示显示 public abstract string Show();public class CodeJob:Job /实现抽象实现抽象Job的的Execute方法方法 public override void Execute()FrmCodeExe frmCodeExe=new FrmCodeExe(this);frmCodeExe.ShowDialog();演示示例:抽象类的实际应用演示示例:抽象类的实际应用打开不同工作类打开不同工作类型的窗体,填写型的窗体,填写指标执行情况指标执行情况传递当前对象传递当前对象的引用的引用抽象方法抽象方法抽象类的应用场合父类提供一系列规定,约束子类的行为父类提供一系列规定,约束子类的行为Dog:Animal Cat:Animal abstract Animal 猫咪喵喵叫猫咪喵喵叫 狗狗汪汪叫狗狗汪汪叫 abstract 叫叫()父类可以提供一些共父类可以提供一些共性的行为性的行为抽象类和抽象方法实抽象类和抽象方法实现多态性现多态性对比虚方法抽象类和抽象方法抽象类和抽象方法抽象类通常代表一个抽象的概念抽象类通常代表一个抽象的概念抽象方法约束子类对象的行为抽象方法约束子类对象的行为比如:抽象的动物类,具有抽象方法吃比如:抽象的动物类,具有抽象方法吃()、喝、喝()虚方法虚方法具体类的默认实现,提供其子类扩展实现方式具体类的默认实现,提供其子类扩展实现方式比如:数据库连接类,比如:数据库连接类,Connect()方法实现与方法实现与SQL Server的连接,数据库连接子类继承并重写它,实现与的连接,数据库连接子类继承并重写它,实现与MySQL连连接接抽象方法与虚方法抽象方法抽象方法虚方法虚方法用用 abstract 修饰修饰用用 virtual 修饰修饰不允许有方法体不允许有方法体要有方法体,哪怕是一个分号要有方法体,哪怕是一个分号必须必须被子类被子类 override可以可以被子类被子类 override只能在抽象类中只能在抽象类中除了密封类都可以写除了密封类都可以写抽象类中可以包括抽抽象类中可以包括抽象方法和非抽象方法象方法和非抽象方法 面向对象的三大特性隐藏内部实现,稳定外部接口隐藏内部实现,稳定外部接口 封装封装继承继承子类继承父类成员,实现代码复用子类继承父类成员,实现代码复用 多态多态不同子类对同一个消息作出不同的反映不同子类对同一个消息作出不同的反映 任务任务5.7 5.7 计算圆面积和周长、圆柱计算圆面积和周长、圆柱体面体面积和体积积和体积 任务描述:设计计算器界面设计计算器界面通过多级继承,完成圆通过多级继承,完成圆面积和周长的计算、圆面积和周长的计算、圆柱体面积和体积的计算柱体面积和体积的计算。将圆心坐标定义为基类,在基类中包含坐标将圆心坐标定义为基类,在基类中包含坐标X属性和属性和Y属性,定义属性,定义Print方法用来输出圆心方法用来输出圆心坐标位置坐标位置 继承基类建立圆派生类,新增圆的半径继承基类建立圆派生类,新增圆的半径R属属性,定义求圆面积和周长的方法,并重写性,定义求圆面积和周长的方法,并重写Print方法用来输出圆心坐标、圆面积和周长方法用来输出圆心坐标、圆面积和周长 将圆作为基类建立圆柱派生类,新增圆柱体将圆作为基类建立圆柱派生类,新增圆柱体的高度的高度Height这一属性,重写求面积方法,这一属性,重写求面积方法,改为求圆柱表面积,定义求体积的方法,重改为求圆柱表面积,定义求体积的方法,重写写Print方法用来输出圆柱体表面积和体积等方法用来输出圆柱体表面积和体积等 任务任务 5.3 5.3 根据圆的半径计算圆面积根据圆的半径计算圆面积定义基类定义基类 public class Centre protected int x,y;public Centre()public Centre(int myx,int myy)x=myx;y=myy;public virtual string Print()string str=圆心坐标:圆心坐标:(+X.ToString()+,+Y.ToString()+);return str;构造函数构造函数虚拟方法虚拟方法 定义派生类定义派生类 public class Round:Centre /定义派生类定义派生类 private int r;public Round()public Round(int myx,int myy,int myr):base(myx,myy)r=myr;public override string Print()string str=base.Print()+rn+圆的面积:圆的面积:+Area().ToString()+rn+圆的周长:圆的周长:+Perimeter().ToString();return str;方法覆盖方法覆盖从派生类中访问基类的属性和从派生类中访问基类的属性和方法成员方法成员 指导员工执行工作列表训练要点训练要点抽象类和抽象方法抽象类和抽象方法需求分析需求分析实现员工执行工作列表实现员工执行工作列表编码工作指标项:有效编码行数、遗留问题、工作日编码工作指标项:有效编码行数、遗留问题、工作日测试工作指标项:测试用例个数、发现的测试工作指标项:测试用例个数、发现的Bug数、工作日数、工作日实现思路实现思路搭建窗体搭建窗体编写编写Job类类编写编写Job子类子类(TestJob、CodeJob),并实现抽象,并实现抽象Execute()方法方法实现右键实现右键“执行执行”响应事件响应事件完成时间:完成时间:25分钟分钟练习查看工作指标完成情况需求说明需求说明实现员工查看工作指标完成情况实现员工查看工作指标完成情况完成时间:完成时间:15分钟分钟总结实现面向对象的多态性有哪几种方法?实现面向对象的多态性有哪几种方法?抽象类可以被继承吗?抽象类可以被继承吗?抽象方法可以有方法体吗?抽象方法可以有方法体吗?简述抽象方法和虚方法的区别?简述抽象方法和虚方法的区别?- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 理解
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文