第11章接口和结构 ■11.1接口 接口是抽象成员的集合,这些抽象成员可以是抽象方法、属性、 索引器、事件等。接口是实现多继承的工具。实际上,接口是 些实现特定功能的抽象成员的集合。一个类可以继承多个接口, 从而获得多个行为的描述,将它们组合成新的功能并在类中实现 1111定义接口 定义接口的格式为: 特性接口修饰符 interface接口名:基接口列表 接口体 接口体的声明可以包括: 接口方法声明;接口属性声明;接口事件声明;接口索引器声明
第11章 接口和结构 接口是抽象成员的集合,这些抽象成员可以是抽象方法、属性、 索引器、事件等。接口是实现多继承的工具。实际上,接口是一 些实现特定功能的抽象成员的集合。一个类可以继承多个接口, 从而获得多个行为的描述,将它们组合成新的功能并在类中实现。 11.1.1 定义接口 定义接口的格式为: 特性 接口修饰符 interface 接口名:基接口列表 { 接口体 } 接口体的声明可以包括: 接口方法声明;接口属性声明;接口事件声明;接口索引器声明 ◼ 11.1 接口
11.1接口 ■11.1.2实现接口 接口可以由类来实现,也可以由结构来实现。所谓实现接 口,就是继承它们并且在被继承方法、属性、索引器和事件中填 入体现所需行为的代码 用类实现接口的格式为 class类名:[基类],接口,接口,…,接口 //成员定义部分 基类名在接口名之前,基类至多只能有一个,但可以继承零个或 多个接口
11.1 接口 接口可以由类来实现,也可以由结构来实现。所谓实现接 口,就是继承它们并且在被继承方法、属性、索引器和事件中填 入体现所需行为的代码。 用类实现接口的格式为: class 类名 : [基类],接口,接口,…,接口 { …… // 成员定义部分 } 基类名在接口名之前,基类至多只能有一个,但可以继承零个或 多个接口。 ◼ 11.1.2 实现接口
11.1.3接口对象 接口中包含的是抽象的方法,接口不可能有真正意义上的对象 但是接口本质上是一组协议,这一点和产生多态对象的基类的 作用和地位十分相似,实际上,接口也可以声明对象,而用实 现该接口的派生类的构造函数创建对象,本书把这样的接口称 为接口对象。利用接口对象可以将实现该接口的派生类作为 个整体来处理
11.1.3 接口对象 接口中包含的是抽象的方法,接口不可能有真正意义上的对象。 但是接口本质上是一组协议,这一点和产生多态对象的基类的 作用和地位十分相似,实际上,接口也可以声明对象,而用实 现该接口的派生类的构造函数创建对象,本书把这样的接口称 为接口对象。利用接口对象可以将实现该接口的派生类作为一 个整体来处理
11.4显式接口成员实现 集,, 多继承接口以及隐式继承基接口都有可能使得派生类或者派生接 口中出现相同签名的成员,同时也可能出现并不需要的成员。C# 接口可以定义显式接口成员实现来避免这些问题 显式接口成员使用完全限定名称作为该成员的标识符。完全限定 名称是用接口名和接口成员名连接而成的,但是这个接口名必须 是出现在基接口列表中的显式基接口。实现显式接口成员时应该 注意: 口显式接口成员实现访问控制权限是 private,所以不能用其它 访问控制符; 口显式接口成员实现不能用 abstract、 virtual、 override或 static修饰符: 调用显式接口成员实现时,必须使用接口对象,而不是类对象 口也可以用强制类型转换访问显式接口成员实现
1.1.4 显式接口成员实现 多继承接口以及隐式继承基接口都有可能使得派生类或者派生接 口中出现相同签名的成员,同时也可能出现并不需要的成员。C# 接口可以定义显式接口成员实现来避免这些问题。 显式接口成员使用完全限定名称作为该成员的标识符。完全限定 名称是用接口名和接口成员名连接而成的,但是这个接口名必须 是出现在基接口列表中的显式基接口。实现显式接口成员时应该 注意: ❑ 显式接口成员实现访问控制权限是private,所以不能用其它 访问控制符; ❑ 显式接口成员实现不能用abstract、virtual、override或 static修饰符; ❑ 调用显式接口成员实现时,必须使用接口对象,而不是类对象; ❑ 也可以用强制类型转换访问显式接口成员实现
112结构 结构与类类型相似,结构也可以拥有字段、常数、属性、索引 器、方法、事件、运算符和嵌套类型等各种成员;结构也可以 实现接口 但是,结构和类之间有本质的差别:结构是值类型,存放在栈 中,而类是引用类型,存放在堆中,由此导致了不少语法上的 不同,和应用场合的不同
11.2 结构 结构与类类型相似,结构也可以拥有字段、常数、属性、索引 器、方法、事件、运算符和嵌套类型等各种成员;结构也可以 实现接口。 但是,结构和类之间有本质的差别:结构是值类型,存放在栈 中,而类是引用类型,存放在堆中,由此导致了不少语法上的 不同,和应用场合的不同