- 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
- 2025年山东省东营市行政职业能力测验题库推荐.docx
- 2025年山东省威海市行政职业能力测验模拟试题附答案.docx
- 2025年山东省东营市行政职业能力测验模拟试题附答案.docx
- 2025年山东省东营市行政职业能力测验模拟试题必考题.docx
- 2025年山东海事职业学院单招职业倾向性考试题库必威体育精装版.docx
- 博士研究生科研创新能力提升项目(社科类)申报书.doc
- 2025年山东服装职业学院单招职业倾向性测试必刷测试卷附答案.docx
- 2025年山东服装职业学院单招职业技能考试题库附答案.docx
- 2025年山东海事职业学院单招职业倾向性考试必刷测试卷附答案.docx
- 2025年山东城市服务职业学院单招职业适应性测试必刷测试卷附答案.docx
最近下载
- 黄元御《四圣心源》译读要点.doc VIP
- 6.螺杆式冷水机组(含风冷螺杆式冷热水机组)用户需求URS-1.doc VIP
- 农贸市场运营方案设计.ppt VIP
- 高考英语图表作文公开课课件讲义资料.doc VIP
- 测绘资质分级标准.pdf VIP
- 铁矿矿石的物化性质与实验分析考核试卷.docx VIP
- 2019年冀教版七年级数学下册期末考试试卷.pdf VIP
- (高清版)DB34∕T 4095-2022 高速公路建设项目电子源文件同步归档指南.pdf VIP
- 2025年河北石家庄市市属国有企业公开招聘应届毕业生223名笔试模拟试题及答案解析.docx VIP
- 初中语文教学总结.docx VIP
文档评论(0)