接口pk抽象类

时间:2022-04-09 18:50:08
作为开发者,谁从来没有陷入过周而复始地争论应该是使用接口还是抽象类?这是一场永无休止的争论,不同阵营的人总是坚定地坚持自己的立场。应当使用接口还是抽象类?对于初学者来说那更是满头雾水。
这个问题应该考虑一下几个因素:
  asp.net 2.0 bete 测试前的构造完全是通过战略模式的定义,即通过接口,实现提供程序模型。在bate 1 时,基类(抽象类)代替了接口,因而发行版也使用基类。asp.net 团队看起来对这个问题有了解决方案,不是吗?

   接口定义了行为规范,就是相关的方法地一个集合,但是没有具体的实现。接口类型是一种类型的部分描述,可能有多个类支持它,正因此,很多接口都采用后缀“able”作为结尾,诸如IDisposable,IComparable,IFormattable。如果一个接口只有一个有用的实现类,则该接口可能设计不当而造成的后果。

   基类定义了子类的公共行为和公共编程接口。类比接口灵活。如果要添加一个放入到类里,则只要该方法不是抽象地,那么任何派生类(子类)都可以使用到。而接口就不行。

   根据这些因素,只要有可能,尽量使用抽象类而不使用接口(但不是总是使用抽象类)