接口:
定义:接口就是语义相关的一个或多个抽象成员组成的命名集合。接口表示的是指定的类或结构需要支持的行为。
->接口包含的成员不带访问修饰符(因为所有接口成员都隐式规定为公共(public)和抽象(abstract)的。
->所有在接口中定义的成员都必须在要实现它的类或结构中实现。
接口与抽象类的对比:
->相同点: 当一个类派生自抽象基类时, 它必须实现抽象方法的细节(倘若派生类没有声明为抽象的)
->不同点: 抽象基类不只能够定义一组抽象方法,还可以指定公用的、私有的和受保护的状态数据以及许多可被子类访问的实体方法。
如何动态判断一个类型支持哪些接口?
1. 显式强制转换: IPointy a =( IPointy)b; 需要使用结构化异常处理;不推荐。
2. as关键字(获取接口引用):可以在使用该关键字的语句中得到指向该对象接口的引用;否则,将返回一个值为null的空引用。
IPointy a = b as IPointy; if(a!=null) { } else { }
3. is关键字(获取接口引用): 如果要考察的对象与指定接口不符,将返回false值。
If ( b is IPointy) { } else { }
显式接口实现:
->不能在定义显式实现成员时加访问修饰符。