第八章 接  口

一、接口和抽象类的关系

·接口相当于抽象类,只是不能包含任何实现的方法

·接口的每种方法都必须在派生类中实现

·声明为interface后就不用加abstract关键字了,已经声明接口成员为抽象的了

二、接口的作用

·接口是类的“模具”,它指明了一个类应该提供哪些内容

·接口提高了程序的扩展能力

三、声明接口

·只限于方法,索引器,属性,事件的声明,不能实现

·不能包含字段,构造函数,常量等,也不能包含静态成员

·接口的成员都是隐式公开的,不需要加访问修饰符(如显式指定访问级别编译器会报错)

·指定方法时只给出返回值类型,方法名称,参数列表,以分号结束

·接口也用Pascal命名法,名称应该冠以“I”

四、实现接口

·使用“:”继承

·实现方法,并不重写方法,所以不用写关键字override

·实现接口的方法的返回值,方法名,参数列表应与接口中声明的方法一致

·实现接口的方法应指定为public

五、实例化的方式,调用方式都与类相同

六、多重接口实现

·C#允许多重接口实现(继承)

·每个接口的每种方法都必须在派生类中实现,既接口一旦声明,必须继承实现

七、显式接口实现

1.一个类从两个接口继承,且这两个接口中有相同的方法(包括名字,返回值类型,参数),此时使用接口的显式实现

2.调用:接口引用

3.如果省略了访问修饰符:

 ·使用接口引用,编译器认为方法是公有的(声明一个接口类型的变量,new为一个类类型)

 ·使用类引用时,编译器认为方法是私有的(声明一个类类型的变量,依然new为这个类)

八、接口的继承

1.合并接口:将多个接口合并成一个,形成一个派生接口

2.类实现派生接口时,必须为基接口和派生接口的所有成员编写实现代码