- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11 理解类的多态.ppt
11 理解类的多态 11. 理解类的多态性 面向对象编程(OOP)的三大特性: 封装性 继承性 多态性 本章主要介绍: 理解什么是类的多态性 掌握使用虚方法来实现多态 熟悉使用抽象类来实现多态 了解使用接口来实现多态 11.1 什么是类的多态性 同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。这就是类的多态性。 运行多态:基类的变量指向派生类的对象,在调用方法时,实际调用的仍是子类的方法,这就是类的多态性 编译多态:同一个类中,存在同名的方法,但方法签名不同(主要是参数不同),即方法的重载。 我们所说的类的多态性是指运行多态。 11.1 基本概念 所谓多态,就是把派生类对象当成基类对象来使用。换句话说,就是认为派生类对象是(is a)一种基类对象。 把派生类对象当成基类对象来使用,就是“多态”技术的核心。 多态性引用只能引用基类的成员。 多态的实现方式有以下几种: 虚方法 抽象方法 接口 11.2 虚方法 如果希望基类中的某个方法能够在派生类中进一步得到改进,那么可以把这个方法定义为虚方法。 虚方法就是能在派生类中能够对其实现进一步改进的方法。 在基类的定义中,通过virtual关键字来说明该方法为虚方法。 在派生类的定义中,如果要重载基类的虚方法,使用override关键字。 11.2 虚方法 在Point-Circle-Cylinder示例中,Point类是基类,我们在Point类中定义Area和Volume方法为虚方法。 使用虚方法 如果派生类需要改变某些行为,可以使用override关键字重载该方法。否则将保持该方法原有的行为。 属性也可以定义为virtual 使用虚方法的类多态性的测试 现在的类图 11.3 抽象方法 基类中定义的虚方法,派生类可以重新以新的方式实现(使用override关键字),也可以不提供实现,这时,调用的是基类的实现方法。 有时,在基类定义中,基类不提供实现方法,而要求派生类必须实现该方法。这时,可以使用抽象方法。 在定义基类方法时,使用abstract关键字,可以定义抽象方法。 抽象方法是一个没有被实现的空方法。 含有抽象方法的类是抽象类,只能由派生类来继承,而不能用来实例化对象。相当于定义了一个模板。 并不要求抽象类必须包含抽象成员。含有抽象成员的类一定是抽象类。抽象类可以包含非抽象成员。 从抽象类继承的类的必须实现所有的抽象方法 抽象类Shape Point类 Point类从Shape类继承 Point类此时不再是首个基类,需要作部分更改 不需要定义Area方法和Volume方法 重载而不是定义Name属性 除以上Point、Circle、Cylinder类外,我们还增加了Rectangle类和Cube类,其继承关系见下页。 11.4 接口 接口与抽象类相像,接口可以定义方法、属性、索引器和事件。(与抽象类不同,接口不能定义字段) 接口不提供成员的实现,继承该接口的类必须提供接口成员的实现。 C#规定类只能实现单继承,但可以实现多个接口。 一般上,接口发布以后就不能再更改了,这称为接口的不变性(更改已经发布的接口可能破坏现有代码)。若需要增加接口的功能,则必须创建新接口。 定义IShape接口 使用关键字interface 接口的命名,以字母I开头,后接接口名称。 不能定义接口成员的访问属性。 定义IDraw接口 Point类实现IShape接口 实现IShape接口的Point类必须实现IShape中的所有方法或属性。 Dog类实现IDraw接口 Lion类实现IDraw接口 11.5 密封类(P243) 默认情况下,一个类总可以被另一个类所继承。 如果从设计出发,明确一个类不能被继承(同时意味着无法被扩展),可以声明为密封类。 声明密封类使用sealed关键字 关于类继承的一个总结 在一个类继承体系中: 使用abstract首次引入一个方法的名称,或者定义interface,在接口中,首次引入一个方法的名称; virtual方法,总是方法的第一个实现,virtual方法可以被重载(override); override方法是方法的另一个实现; sealed方法是方法的最后一个实现。 没有定义以上关键字的方法,是方法的第一个实现也是最后一个实现。它不能被重载。 11.7 理解扩展方法(P222) 例:int类型(System.Int32)没有提供求阶乘的方法Fact,如何实现以达到此要求? 设计一个类FactInt32,它从Int32类继承 扩展方法 扩展方法: 在静态类中定义 声明为静态方法 要扩展的类型作为方法的第一个参数,并且使用this关键字修饰 11.8 上机 完成实验报告9。 给Point-Circle-Cylinder应用程序添加一
您可能关注的文档
- —— 2014届毕业班A部生物组工作总结.doc
- —— 2014届毕业班英语组工作总结.doc
- —— 职业生涯规划设计.doc
- ——记叙文阅读.doc
- §11化学实验基本方法.ppt
- §183用表格法解线性规划问题.ppt
- §9-1 阻抗和导纳§9-2 电路的相量图§9-3 正弦稳态电路的分析§.ppt
- 1) About 80 percent of web traffic is in English2) But .ppt
- 1-职业与生涯.ppt
- 1022个H+的物质的量为_____mol,得到_____mol电子后,.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- SY 4201.4-2016 石油天然气建设工程施工质量验收规范 设备安装工程 第4部分:炉类.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(13).电力市场改革与趋势分析.docx VIP
- 云和雪梨生产全程质量控制技术规范.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(12).可视化与报告生成.docx VIP
- 2024-2025学年四川省成都市新都一中实验学校七年级(上)分班数学模拟试卷(含答案).pdf VIP
- 跨座式与悬挂式单轨运输系统幻灯片.ppt VIP
- 市场营销论文:长春农商银行小微企业贷款业务市场营销策略研究.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(11).数据库管理与接口设计.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(10).二次开发工具与技巧.docx VIP
- 有机肥采购项目投标书(范本).docx
文档评论(0)