1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第17章C#40

C#语言程序设计 徐虹 xh27@163.com 第十七章 接口 17.1 什么是接口 ●接口是表示一组函数成员而不实现成员的引用类型。其他类型——类和结构可以实现接口。 17.1什么是接口 接口声明没有为CompareTo方法提供实现,但IComparable接口的描述了方法应该在创建实现接口的类或结构时被实现,应该返回如下值之一: 如果当前对象比参数对象小,返回负值; 如果当前对象比参数对象大,返回正值; 如果两个对象在比较中被认为是相等的,则返回0。 使用IComparable接口的示例 见示例代码Page_274。 Sort对类Myclass对象数组不工作的原因,是它不知道如何比较用户自定义对象和确定它们的次序,所以类需要实现IComparable接口。 实现接口必须做两件事情: 必须在基类列表后面列出接口名称。 必须为借口提供每一个成员的实现。 见示例代码Page_275。 17.2 声明接口 接口声明不包含数据成员。 接口声明只能包含如下类型的静态成员函数的声明:方法、属性、事件、索引。 这些函数成员的声明不能包含任何实现代码,而在每一个成员声明的主体后必须使用分号。 按照惯例,接口名称必须从大写的I开始。 17.2 声明接口 接口的访问性和接口成员的访问性之间的区别: 接口声明可以有任何的访问修饰符public、protected、internal或private。 接口成员是隐式public的,不允许有任何访问修饰符,包括public。 17.3 实现接口 只有类和结构才能实现接口,要实现接口,必须: 在基类列表中包括接口名称。 为每一个接口的成员提供实现。 17.3 实现接口 关于接口实现,重要事项如下: 如果类实现了接口,它必须实现接口的所有成员。( 见实例代码Page_278) 如果类从基类继承并实现接口,基类列表中的基类名称必须放在任何接口之前。 17.4 接口是引用类型 接口不仅仅是类或结构要实现的成员列表。它是一个引用类型。 我们不能直接通过类对象的成员访问接口,然而,我们可以通过把类对象引用强制转换为接口类型来获取指向接口的引用,然后使用点号来调用接口的方法。 17.4 接口是引用类型 见示例代码Page_279。 17.5 接口和as运算符 如果尝试强制转换类对象引用为类未实现的接口的引用,强制转换操作会抛出一个异常,可以使用as运算符避免这种情况。如下所示: 如果类实现了接口,表达式返回指向接口的引用。 如果类没有实现接口,表达式返回null,不抛出异常。 17.6 实现多个接口 类或结构可以实现任意数量的接口。 所有实现的接口必须列在基类列表中并以逗号分隔(如果有基类名称,则在其之后)。 见示例代码Page_281。 17.7 实现具有重复成员的接口 由于类可以实现任意数量的接口,有可能两个或多个接口成员都有相同的签名和返回类型。编译器如何处理? 17.7 实现具有重复成员的接口 类可以实现单个成员来满足所有包含重复成员的接口。(见示例代码page_282) 17.8 多个接口的引用 接口是引用类型,可以通过强制转换对象引用为接口类型的引用来获取一个指向接口的引用,如果类实现了多个接口,我们可以获取每一个的独立引用。(见示例代码page_283) 17.9 派生成员作为实现 实现接口的类可以从它的基类继承实现的代码。(见示例代码page_284) 17.10 显式接口成员实现 如前所示单个类可以实现多个接口,但如果希望为每一个接口分离实现,可以创建显式接口成员实现。显式接口成员实现有如下特征: 与所有接口实现相似,它被类或结构用来实现接口。 它使用限定接口名称声明。 17.10 显式接口成员实现 见示例代码Page_285。(注意这里没有类级别的实现,只有显式接口成员实现) 访问显式接口成员实现 显式接口成员实现只可以通过指向接口的引用来访问。其他的类成员都不可以直接访问它们。 17.11 接口可以继承接口 接口实现可以从基类被继承,而接口本身也可以从一个或多个接口继承。 要指定某个接口继承其他的接口,应在接口声明中把接口以逗号分隔的列表形式放在接口名称的冒号之后,如下所示: 17.11 接口可以继承接口 接口可以在基接口列表中有任意多个接口。 列表中的接口本身可以有被继承的接口。 接口接口包含它声明的所有接口和所有基接口的成员。 见实例代码Page_288。 不同类实现一个接口的示例 见实例代码Page_289。 * * 图17-1 IComparable接口图示 图17-4

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档