第12章 接口供参习.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
接口 目 标 学习完本章之后,你应该能够掌握以下概念: 接口定义 接口的成员 接口的实现 接口和抽象类 引 言 接口定义 从技术上讲,接口是一组包含了函数型方法的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。 声明 接口声明,实际上就是一种定义新的接口的类型声明。声明的格式如下: attributes interface-modifiers interface identifier interfacebase nterface-body ; 接口仅可使用下列修饰符 new public protected internal private 在一个接口定义中,同一修饰符不允许出现多次,new 修饰符只能出现在嵌套接口 中,表示覆盖了继承而来的同名成员。 The public, protected, internal, and private 修饰符定义了对接口的访问权限。 在接口的声明体中,可以定义接口的成员接口的成员。可以是方法属性、索引、指示器和事件。 下面的例子定义了一个名为IControl 的接口,接口中包含一个成员方法Paint。 interface IControl { void Paint(); } 接口的继承 接口具有不变性,但这并不意味着接口不再发展。类似于类的继承性,接口也可以继承和发展。 注意:接口继承和类继承不同。首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承,也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现。其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。 接口可以从零或多个接口中继承。从多个接口中继承时,用“:”后跟被继承的接口名字,多个接口名之间用“,”分割,被继承的接口应该是可以访问得到的。比如从private 类型或internal 类型的接口中继承,就是不允许的。接口不允许直接或间接地从自身继承,和类的继承相似,接口的继承也形成接口之间的层次结构。 请看下面的例子 using System; interface IControl { void Paint(); } interface ITextBox: IControl { void SetText(string text); } interface IListBox: IControl { void SetItems(string[] items); } interface IComboBox: ITextBox, IListBox { } 对一个接口的继承,也就继承了接口的所有成员。上面的例子中,接口ITextBox 和IListBox 都从接口IControl 中继承,也就继承了接口IControl 的Paint 方法。接口IComboBox 从接口ITextBox 和IListBox 中继承,因此它应该继承了接口ITextBox 的SetText 方法和IListBox 的SetItems 方法,还有IControl 的Paint 方法。 接口的成员 接口成员的定义 接口可以包含一个和多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。下面例子中,接口IExample 包含了索引指示器、事件E 、方法F 、属性P 这些成员。 interface IExample { string this[int index] { get; set; } event EventHandler E; void F(int value); string P { get; set; } } public delegate void EventHandler(object sender, EventArgs e); 接口成员默认访问方式是public。 接口成员声明不能包含任何修饰符,比如成员声明前不能加abstract, public, protected, internal, private, virtual, override 或static 修饰符。 接口的成员之间不能相互同名,继承而来的成员不用再声明,但接口可以定义与继承而来的成员同名的成员,这时我们说接口成员覆盖了继承而来的成员,这不会导致错误但编译器会给出一个警告,关闭警告提示的方式是在成员声明前加上一个new关键字。但如果没有覆盖父接口中的成员,使用new 关键字会导致编译器发出警告。 接口成员的访问 对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。但由

文档评论(0)

ustt001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档