- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章接口委托件异常处理
第五章 接口、委托、事件和异常 5.1、接口 5.2、委托 5.3、事件 5.4、异常处理 5.1 接口 接口是抽象成员的集合,这些抽象成员可以是抽象方法、属性、索引器、事件等,接口是实现多继承的工具。 实际上,接口是一些实现特定功能的抽象成员的集合。 一个类可以继承多个接口,从而获得多个行为的描述,将他们组合成新的功能并在类中实现。 5.1.1 定义接口 1、接口的声明 【格式】: [特性][ 接口修饰符] interface 接口名:[基接口列表] { 接口体 } 【说明】: 接口修饰符:new、public、protected、internal、private。 把出现在基接口列表中的基接口称为显示基接口。 接口体的声明可以有:接口方法声明、接口属性声明、接口事件声明、接口索引器声明。 接口中的方法、属性、事件和索引器的声明格式和类中的声明格式的区别在于:接口中上述成员声明不包含实现体。 接口的显示基接口必须至少具有与该接口本身相同的可访问性,例如,接口是internal,那么基接口不能是protected或private。 接口不能直接或间接继承自身,否则会发生编译时错误。 接口方法隐含的访问控制符是public的。 例: public interface IModelable: ICollection, IEnumerable { void Pattern Name(string s);//定义接口方法 int Count {get;} //定义接口属性 string this [int index] {get;set}//定义接口索引器 } “:”表示继承,这和类的继承一样,但可以多继承 接口中的成员是一种没有实现体的抽象成员,他们没有使用abstract关键字修饰,这是一个约定,因为接口成员一定是抽象的。 2、接口的继承 接口允许多重继承,一个接口可以从多个基接口继承,并包含这些基接口继承树上的所有基接口。 当接口从多个接口中继承时,用冒号“:”后跟被继承的接口名字,多个接口名之间用“,”分割。 接口不允许直接或间接从自身继承。 example1 using System; Interface IHandle { void Compute(); } Interface ITextBox :IHandle { void SetText (string text); } Interface IListBox:IHandle { void SetItems (string[] item); } Interface IComboBox: ITextBox, IListbox{} 注意,接口和类的继承不同: 首先,类继承不仅说明继承,而且也是实现继承;而接口继承只是说明继承。也就是说,派生类可以继承基类的方法实现,而派生类的接口只继承了父接口的成员方法说明,而没有继承父接口的实现。 其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。 5.1.2 接口的成员 1、接口的成员定义 接口成员包括从基接口继承的成员以及接口自身定义的成员。接口成员可以是方法、属性、索引和事件,但不能有常数、运算符、构造函数、析构函数、类型和静态成员。 因为接口只具有“被继承”的特性,所以默认时,所有接口成员只具有public特性,接口成员的声明中不能含有任何其他修饰符。 example2 Interface IA { void compute(); //方法成员的声明 int next //属性成员的声明 { get; set; } int this [int index]//索引器的声明 { get; } event Press MyEvent; // 事件成员的声明 } 2、接口成员的访问 接口成员是通过I.M形式的成员访问表达式和I[A]形式的索引器访问表达式来访问的,其中I是接口类型,M是该接口类型的方法、属性或事件,A是对应的索引器参数类表。 对接口方法的调用和采用索引器访问的规则和类中的情况是相同的。 如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。 但由于接口支持多继承,在多继承中,如果两个父接口含有同名的成员,这就产生了二义性,这时需要进行显示的声明。example3 using System; inter
文档评论(0)