- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录 第1章 计算机、因特网、万维网和C# 第2章 Visual Studio.NET集成开发环境 第3章 C#编程介绍 第4章 控制结构(一) 第5章 控制结构(二) 第6章 方法 第7章 数组 第8章 基于对象的编程 第9章 面向对象编程:继承 第10章 面向对象编程:多态性 第11章 异常处理 第12章 图形用户界面概念(一) 第13章 图形用户界面概念(二) 第14章 多线程 第15章 字符、字符串和正则表达式 第16章 图形和多媒体 第17章 文件和流 第18章 数据库、SQL和ADO.NET 第19章 可扩展标记语言(XML) 第20章 ASP.NET、Web窗体和Web控件 第21章 ASP.NET和Web服务 第22章 网络:基于流的套接字和数据包 第23章 数据结构和集合 第24章 可访问性 第10章 面向对象编程:多态性 10.1 概述 继承和多态都是开发复杂软件时要用到的重要技术。多态性能让我们编写出以常规方式来处理的大量相关类,并简化了向系统添加新的类和功能。 有了多态性,就能设计和实现更容易扩展的系统。 多态性定义 10.2 派生类对象转换为基类对象 派生类对象可以被视为基类对象来处理 如果基类引用引用了一个派生类对象,就可以将这个基类引用转换为该对象实际的数据类型,并将该对象作为这种实际的数据类型来处理。 引用在程序中的体现是“=” 请看代码 代码演示了如何将派生类对象分配给基类引用,然后通过强制类型转换,将基类引用转换为派生类引用。 第21行代码将circle1(一个派生类对象的引用)分配给point2(一个基类的对象的引用)。在C#中,由于继承是“属于”关系,所以可以将一个派生类对象分配给一个基类对象。反之则很危险。 第23、24行中,当C#碰到一个virtual(虚拟)方法调用(如ToString方法)时,它会根据被调用方法的对象类型(而不是引用该对象的引用类型)来判断被调用方法的版本。本例中,point2引用了一个Cricle对象,所以C#调用了Circle的ToString方法,而不是Point的ToString方法。这个调用哪个方法的判断便是多态性的一个例子。 部分代码 static void Main( string [ ] args ) { Point point1 = new Point( 30, 50 ); Circle circle1 = new Circle( 120, 89, 2.7 ); Point point2 = circle1; // 1、基类引用派生类对象 output += point2.ToString(); // 访问的是Circle类的ToString方法 Circle circle2 = ( Circle ) point2; // 2、基类引用可以转换为派生类引用 if ( point1 is Circle ) // 判断左操作符类型是否与右操作符一致 { circle2 = ( Circle ) point1; // 无法将基类对象直接转化为派生类对象 } } 基类引用和派生类引用与基类对象和派生类对象有4种组合方式: 1、用基类引用来引用基类对象; 2、用派生类引用来引用派生类对象; 3、用基类引用来引用派生类对象; 4、用派生类引用无法直接引用基类对象。需要的过程为:首先定义基类引用来引用派生类对象,然后将基类引用转换为派生类引用。 10.3 类型字段和switch语句 对于大型程序中的对象,判断其类型的方法之一式使用switch结构。 但是,使用switch逻辑会使程序面临各种各样的问题。 多态性编程可以消除不必要的switch逻辑。使用C#的多态性机制来执行对应的逻辑,程序员可以避免与switch逻辑相关的常见错误。 10.4 多态性示例 10.5 抽象类和方法 定义从没有打算实例化任何对象的类,称为抽象类。通常作为基类,一般称为抽象基类。 抽象类通常包含一个或多个抽象方法或者抽象属性。 对类而言,如果对象可以从它那里被实例化,可以把这样的类称为具体类。 关键字abstract用于将方法和属性声明为抽象。 被声明为abstract的方法和属性不会提供实现部分——试图这样做是语法错误。 每个具体的派生类都必须覆盖基类的所有抽象方法和属性(利用关键字override),并提供这些方法和属性的具体实现部分。 其
您可能关注的文档
- 课题六_____低压配电柜安装.ppt
- 第3章 数据挖掘的体系结构及模型.ppt
- 数据库中表管理.doc
- 第12章-城市市场空间、社会空间与感应空间.ppt
- 基于内容图像数据库检索技术.pdf
- 怎样让网站被百度收录三大技巧.ppt
- 北大青鸟S2深入.NET平台与C#编程总结.doc
- 第十篇《决策分析》.ppt
- 第十四篇 采区车场技术.doc
- Ad Hoc网络中联合功率节省及功率控制的MAC协议.pdf
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)