您的位置:首页 > 编程语言 > C#

菜鸟C#成长记——小议接口和抽象类比较

2008-10-13 19:36 274 查看
我们在日常中经常讨论到接口和抽象了的异同,下面我就跟大家探讨一下这个问题,以作抛砖引玉之用,希望大家多多砸玉哦。

接口和抽象类非常相似,包括它们要求实现和继承自己的类实现全部方法属性等。如上文接口的实现所提到的,我们完全可以将IStorable声明成一个抽象类:

//定义抽象类

abstract class Stroable

//定义接口

interface IStorable

{

{ get;set;}

}

Document从IStrobale继承,跟实现接口没有太大区别。

接口是可以多重继承,抽象类不可以。只有在必须使用方法定义或者成员变量的时候,才应考虑采用抽象类。

按照相顾的技术标准文献,Microsoft的设计人员一般不建议大家使用接口的,而是推荐使用抽象类,因为抽象类更加便于版本控制。假设你设计了一个接口供程序员使用,现在想给这个接口增加一个新的成员,这时候你就不得不改变既有的接口,破坏针对原有接口编写新的代码,或者是两外创建想IStrobale2这样的新接口。如果你经常这样做的话,你很快就会得到大批这样紧密关联的接口,造成系统的越来越复杂。

而使用抽象类的话,你只是需要追加一个新的虚拟方法并配以默认实现就可以了,这样做既可以解决问题,又没有在同一个命名空间中引入新的类。

最佳的体验实践是:若要创建一个被多人复用的类库,最好使用抽象类;若是为了单个项目创建类,使用接口更好,因为接口具有抽象类所没有的更加容易理解的弹性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: