1
第 10章 接口
10.1 类与接口
10.2 接口的定义
10.3 接口的实现
10.4 接口的组合
10.5 接口的查询
2
10.1.1 类与接口的比较接口类似于抽象类,但它与类之间的差别很大:
接口不提供任何实现代码。
接口只包含方法、属性、事件和索引器,而不包含数据成员、构造函数、析构函数,也不能包含静态成员。
接口中的所有成员都被视为公有的。
接口允许多重继承。
3
10.1.2 使用接口的优势
可以将接口作为一种给结构提供继承特性的途径。
可以在一个类中实现多个接口,从而获得抽象类无法获得的功能。
可以给类添加通过其他方法无法实现的特征。
强制新的类实现接口定义的所有特征。
返回目录
4
10.2.1 定义接口
接口定义的一般格式为:
[特征 ] [修饰符 ] interface 接口名 [:父接口表 ]
{
//接口成员定义体
}
5
10.2.2 接口成员
接口可以声明零个或多个成员。一个接口的成员不止包括自身声明的成员,还包括从父接口继承的成员。
1.接口方法成员
声明接口的方法成员的格式为:
[特征 ] [new] 返回类型 方法名( [参数表 ]);
2.接口属性成员
声明接口的属性成员的格式为:
[特征 ] [new] 返回类型 属性名 {get; 和 |或 set;};
6
3.接口索引器成员
声明接口的索引器成员的格式为:
[特征 ] [new] 数据类型 this[索引参数表 ]{get; 和 |或 set;};
4.接口事件成员
声明接口的事件成员的格式为:
[特征 ] [new] event 代表名 事件名;
返回目录
7
10.3.1 接口的实现
接口实现的语句格式为:
class 类名:接口名列表
{
…// 类实体
}
8
( 1)当一个类实现一个接口时,这个类就必须实现整个接口,而不能选择实现接口的某一部分。
( 2)一个接口可以由多个类来实现,而在一个类中也可以实现一个或多个接口。
( 3)一个类可以继承一个基类,并同时实现一个或多个接口。
( 4)在类中实现的接口成员必须定义为 public。
在类中实现的成员的数据类型也必须和它们在接口中声明的类型完全一样。
9
10.3.2 显式接口成员实现
当类实现接口时,如给出了接口成员的完整名称,则称这样实现的成员为显式接口成员,
其实现被称为显式接口实现。
显式接口成员实现不能使用任何修饰符。
10
10.3.3 接口的重实现
如果某个类可以再次实现已被它的基类实现的接口,则称之为接口的重实现。
接口的重实现的方法是把接口的名称置于基类列表中。
11
10.3.4 接口实现的继承
一个类继承它的基类中所有接口的实现。
如果没有显式的接口重复实现,一个派生类不能修改从基类继承的接口映射 。
返回目录
12
C#语言可以把两个或两个以上的接口组合在一起,这样一个类只需实现合并后的接口就可以了。
使用组合接口的能力,不仅能够简单地把语义上相关的接口变成一个单个接口,而且还能在需要的时候,向新的“复合”接口添加方法。
返回目录
13
10.5.1 通过使用 is实现查询
用户可以使用 is运算符检测运行时对象的类型是否与某一给定的类型兼容。
使用形式为:
表达式 is 类型
14
10.5.2 通过使用 as实现查询
用户可以使用 as运算符在兼容类型之间实现转换。
其使用形式为:
对象 =表达式 as 类型返回目录
第 10章 接口
10.1 类与接口
10.2 接口的定义
10.3 接口的实现
10.4 接口的组合
10.5 接口的查询
2
10.1.1 类与接口的比较接口类似于抽象类,但它与类之间的差别很大:
接口不提供任何实现代码。
接口只包含方法、属性、事件和索引器,而不包含数据成员、构造函数、析构函数,也不能包含静态成员。
接口中的所有成员都被视为公有的。
接口允许多重继承。
3
10.1.2 使用接口的优势
可以将接口作为一种给结构提供继承特性的途径。
可以在一个类中实现多个接口,从而获得抽象类无法获得的功能。
可以给类添加通过其他方法无法实现的特征。
强制新的类实现接口定义的所有特征。
返回目录
4
10.2.1 定义接口
接口定义的一般格式为:
[特征 ] [修饰符 ] interface 接口名 [:父接口表 ]
{
//接口成员定义体
}
5
10.2.2 接口成员
接口可以声明零个或多个成员。一个接口的成员不止包括自身声明的成员,还包括从父接口继承的成员。
1.接口方法成员
声明接口的方法成员的格式为:
[特征 ] [new] 返回类型 方法名( [参数表 ]);
2.接口属性成员
声明接口的属性成员的格式为:
[特征 ] [new] 返回类型 属性名 {get; 和 |或 set;};
6
3.接口索引器成员
声明接口的索引器成员的格式为:
[特征 ] [new] 数据类型 this[索引参数表 ]{get; 和 |或 set;};
4.接口事件成员
声明接口的事件成员的格式为:
[特征 ] [new] event 代表名 事件名;
返回目录
7
10.3.1 接口的实现
接口实现的语句格式为:
class 类名:接口名列表
{
…// 类实体
}
8
( 1)当一个类实现一个接口时,这个类就必须实现整个接口,而不能选择实现接口的某一部分。
( 2)一个接口可以由多个类来实现,而在一个类中也可以实现一个或多个接口。
( 3)一个类可以继承一个基类,并同时实现一个或多个接口。
( 4)在类中实现的接口成员必须定义为 public。
在类中实现的成员的数据类型也必须和它们在接口中声明的类型完全一样。
9
10.3.2 显式接口成员实现
当类实现接口时,如给出了接口成员的完整名称,则称这样实现的成员为显式接口成员,
其实现被称为显式接口实现。
显式接口成员实现不能使用任何修饰符。
10
10.3.3 接口的重实现
如果某个类可以再次实现已被它的基类实现的接口,则称之为接口的重实现。
接口的重实现的方法是把接口的名称置于基类列表中。
11
10.3.4 接口实现的继承
一个类继承它的基类中所有接口的实现。
如果没有显式的接口重复实现,一个派生类不能修改从基类继承的接口映射 。
返回目录
12
C#语言可以把两个或两个以上的接口组合在一起,这样一个类只需实现合并后的接口就可以了。
使用组合接口的能力,不仅能够简单地把语义上相关的接口变成一个单个接口,而且还能在需要的时候,向新的“复合”接口添加方法。
返回目录
13
10.5.1 通过使用 is实现查询
用户可以使用 is运算符检测运行时对象的类型是否与某一给定的类型兼容。
使用形式为:
表达式 is 类型
14
10.5.2 通过使用 as实现查询
用户可以使用 as运算符在兼容类型之间实现转换。
其使用形式为:
对象 =表达式 as 类型返回目录