接口属性:
- 接口成员不能有修饰符。
- 接口的真正用途要通过继承接口的派生类中实现。
- 在派生类中,接口中的类将被重写,实现具体功能。
- C#不允许多重类继承;
- 但C#允许多重接口实现;
- 这意味着一个类可以实现多个接口;
显式接口实现:
- 由于不同接口中的方法可以重名,因此,在一个类中实现接口的方法时就存在着多义性的问题。对于这类问题,可以显式实现接口中的方法。
- 显式接口实现的本质是在派生类中重写接口中的方法时,指明被继承的接口名称。
- 对于显式实现的接口方法,不能通过类的实例进行访问,而必须使用接口的实例进行访问。
接口的切换:(QI:query interface)
- 由于显式的实现了接口,所以调用函数不能直接通过类的实例来调用接口的方法。
- 而是必须将句柄传递给接口类型的句柄,并通过接口句柄来调用实例的显式实现的方法。
- 当需要调用类的不同的接口的方法时,需要切换新的接口句柄以调用其它的方法,这个操作就是query interface
接口的继承
- 扩展接口:在已有接口的基础上派生新的接口。
- 组合接口:在已有两个以上接口的基础上派生新的接口。