




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# Windows程序设计与应用第7章 继承、多态、委托和事件7.1 类的继承7.2 抽象类与抽象方法7.3 接口7.5 委托和事件7.4 类的多态7.6 本章总结第7章 继承、多态、委托和事件 7.1 类的继承12347.1.1通过一个已有类来定义一个新类,新类和已有类的关系成为继承。被继承的已有类称为超类-super class(也称为基类、父类),继承得到的新类称为扩展类-expansion class(也称为子类、派生类)。通过继承,扩展类可以拥有超类的成员(字段、方法等)。在扩展类中,可以直接使用继承来的成员,也可以对继承的成员进行修改,还可以定义全新的成员,使扩展类功能得到增强。
2、 类的继承格式如下:类的继承格式如下: 修饰符class 扩展类:超类,接口列表 扩展类类体 C#中使用冒号中使用冒号“:”表示继承关系;表示继承关系;C#对类的继承是单继承;对类的继承是单继承;C#对接口的继承(实现)是多继承;对接口的继承(实现)是多继承;超类要求写在接口列表前面超类要求写在接口列表前面7.1.2 继承的实现继承的实现7.1 类的继承 7.1.3 base关键字在C#中提供了base关键字来表示对超类对象的引用。7.1 类的继承可以使用base关键字访问超类成员。和this关键字一样,base关键字也不能出现在静态方法中。 扩展类会继承超类无参数的构造方法,并在创建扩展类对
3、象时首先调用超类的无参数构造方法,再执行扩展类自己的无参数方法(如果存在的话)。超类中不包含无参数构造方法,而扩展类创建实例时会产生编译错误。当扩展类的构造方法(无论是否带有参数)明确指定继承超类中一个构造方法时,创建扩展类对象,将先调用超类中指定的那个构造方法,再执行扩展类自己的构造方法。7.1.4扩展类中超类扩展类中超类构造方法的构造方法的执行执行 扩展类调用扩展类调用构造方法构造方法机制一机制一 扩展类调用扩展类调用构造方法构造方法机制二机制二7.1 类的继承 扩展类调用扩展类调用构造方法构造方法机制三机制三 7.2 抽象类与抽象方法抽象类本身不能被实例化,即不能直接创建抽象类的对象。抽
4、象方法只有方法头,没有方法体,即没有方法的具体实现;每个抽象方法的方法声明以分号结束。当继承抽象类的扩展类是非抽象类时,则必须在扩展类中为抽象超类中的抽象方法提供具体的实现。使用abstract关键字作为修饰符的类和方法称为抽象类和抽象方法。除了抽象类和抽象方法外,属性和索引等也可以声明为抽象的。7.2.1抽象类与抽象方法抽象类和抽象方法的关系是:抽象类中可以不包含抽象方法;但如果某个类中包含了抽象方法,则该类必须声明为抽象类。 属性声明使用属性声明使用sealed修饰,表示修饰,表示属性重写了超类的属性重写了超类的属性,但不允许再属性,但不允许再被扩展类被重写。被扩展类被重写。方法声明使用方
5、法声明使用sealed 修饰,表示方法重写修饰,表示方法重写 了超类的方法,但不了超类的方法,但不 允许再被扩展类被重允许再被扩展类被重写。写。类的声明使用类的声明使用sealed修饰,表示该类不允许修饰,表示该类不允许被继承。被继承。sealed关键字可以用在类、实例方法和属性的声明中。作用如下:7.2 抽象类与抽象方法7.2.2 关于sealed关键字 除了使用抽象类达到设计与实现分离,还可以使用接口来完成同样的功能。与抽象类不同,接口是完全的抽象成员的集合,即接口体中只能包含抽象成员(抽象方法、抽象属性等)。7.3 接口接口体包含的成员默认即为公有、抽象成员,因此不需要在接口体内的成员声
6、明前使用public和abstract关键字。与类的单继承要求不用,一个类可以同时实现多个接口,接口的实现也使用冒号“:”。所谓多态(polymorphism)指同一事物在不同的条件下表现出不同的形态。7.4 类的多态 编译器根据调用方法时提供的参数个数来进行方法确定。编译器根据调用方法时提供的参数数据类型来进行方法确定。编译器根据调用方法时提供的参数前后顺序来进行方法确定。7.4.1方法的重载方法的重载 参数个数参数个数不同不同 参数类型参数类型不同不同 参数类型参数类型不同不同7.4 类的多态方法的重载是指在一个类中包含名字相同但参数类表不同的多个方法。 7.4.2 方法的重写如果超类提供
7、的功能不能够满足要求,则可以在扩展类中重新定义超类的方法,这种操作成为方法的重写。在超类中,如果想让某个方法被扩展类重写,可以使用virtual关键字将方法声明为虚方法。如果某个超类的某些方法允许被重写,需要使用virtual关键字将方法变成虚拟方法。重写虚拟方法是需要注意以下几点:虚拟关键字virtual不能与static同时使用。virtual不能与private同时使用。重写的方法的名称、参数、类型、返回值都必须与原虚拟方法完全一致。7.4 类的多态 7.5 委托和事件委托委托多重委托多重委托事件事件委托(委托(delegate)是一种数据结构,也是)是一种数据结构,也是一种引用数据类型
8、。一种引用数据类型。允许通过委托对象名允许通过委托对象名()这种形式调用方法。这种形式调用方法。事件(事件(event)是指当对象发生某些动作)是指当对象发生某些动作(或事情)时,向其他对象提供消息的一(或事情)时,向其他对象提供消息的一种方式。种方式。委托委托事件事件多重委托多重委托 委托主要用于回调机制(CallBack)和事件处理。使用delegate类型的步骤如下:- 声明声明delegate类型类型public delegate string MyDelegate(int i)-定义委托所要代表的方法定义委托所要代表的方法Public string MethodA(int i)/代码
9、代码-创建委托实例,关联要代表的方法创建委托实例,关联要代表的方法MyDelegate d=new MyDelegate(MethodA)-调用委托实例调用委托实例d()7.5 委托和事件 一个委托对象不仅可以关联一个方法,而且允许同时关联多个与委托类型匹配的方法这种机制称为多重委托或委托的多播机制。对于多重委托,执行时多个方法按顺序执行。实现多重委托可以是运算符+=来完成。7.5 委托和事件 在C#中,事件通过委托来实现。事件一般关联两个对象:触发事件的对象发送方和被通知的对象接收方。为了使委托对象聚类的成员方法相同的地位,需要在定义委托对象时在前面加上关键字event,这就称为了一个事件。7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 稀土金属压延加工的绿色制造实践与挑战考核试卷
- 生理参数监测与疾病预防考核试卷
- 方便食品包装的可降解材料研究考核试卷
- 流体包裹体对铬矿成矿作用的指示意义考核试卷
- 安全机器学习与模式识别考核试卷
- 经纪人如何进行艺人宣传推广与市场营销策划考核试卷
- 珠海市高三月质量监测(二模)理综生物试题
- 石家庄信息工程职业学院《Html网页开发与设计》2023-2024学年第二学期期末试卷
- 江西管理职业学院《田间试验与统计》2023-2024学年第一学期期末试卷
- 南京理工大学紫金学院《互换性与技术测量A》2023-2024学年第二学期期末试卷
- 地球历史及其生命的奥秘智慧树知到期末考试答案章节答案2024年兰州大学
- 土地运作服务合同范本
- 河南省郑州外国语2024年中考数学四模真题(含答案)
- 抖音火花合同电子版获取教程
- 2024年广东省广州市海珠区中考二模英语试卷
- 中考语文二轮专题复习:《记叙文复习之人物形象分析》课件
- 第13课资本主义世界殖民体系的建立与亚非拉民族独立运动课件-2023-2024学年中职高一下学期高教版(2023)世界历史全一册
- 中国少数民族传统体育智慧树知到期末考试答案章节答案2024年云南体育运动职业技术学院
- 乡村文旅产业振兴规划方案
- 风机性能综合测试系统的研究与开发的开题报告
- 《隐形防护网应用技术规程》
评论
0/150
提交评论