关于 C# 中接口的一些小结
< 关于 C# 中“接口”的一些小结 >
对于 C# 这样的不支持多重继承的语言,很好的体现的层次性,但是有些时候多重继承的确有一些用武之地。
比如,在 Stream 类 、 图形设备 Graphics 类 这两个我们常用的类来说,他们的实现都是 .NET 通过调用操作系统内部的一些功能来完成的
因而,在使用完它们之后,需要我们自己将其关闭,回收系统中的相关资源。
不难发现,这两个类中都有一个相同的“功能”, 那就是 关闭(回收)操作,即我们常用的 Close 方法。
在传统的 C++ 中,我们或许可以写一个用来关闭回收的类,让这两个类都去继承,但是这样做未免有些违背了面向对象中的继承派生的思想内涵。
所以 在 .NET 里,加入了“接口(interface)”这一技术来解决这样的矛盾。
其实,接口就是完成了一些上述的类似 Stream 类 和 Graphics 类 中都有 Close 这样的关闭功能的一种功能上的规范统一;
让它们都 “套接上”名为 "IDisposable" 这个接口, 该接口中规定了 Close 方法的功能规范。那么套上这个接口的 Stream 类 和 Graphics 类 就必须实现 "IDisposable" 接口中规定的 Close 功能,从而实现了不同类之间没有继承关系但是有着功能上相类似的统一规范。
下面是一些在使用接口技术时的 注意点 :
1#、在需要表达不同的类型具有相同的功能规范时,可以使用接口。
2#、接口可以看作是极为抽象的类型,其内部没有任何实现,只有方法、属性的签名。
3#、接口主要表达功能的规范,任何类型,一旦确定与接口产生派生关系,被称为实现了接口。
4#、任何实现接口的类型(除了另一个接口继承本接口),必须通过合理的方式来实现其接口内部的全部功能条目。
5#、接口与抽象类:
-- 1、相似之处在于:都不可以直接获得实例。
-- 2、接口内部的所有功能全都是默认共有的,在代码中无需表达任何访问修饰符
** 任何一个接口都可以被多个类型实现,且任何一个类或结构都可以实现多个接口,任何一个接口多可以继承多个接口。