接口和抽象类浅析(Interface and abstract class)

作者PeterXu  来源:Blog.CSDN  Blog: http://blog.csdn.net/peterreg/
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。本文地址:http://blog.csdn.net/peterreg/archive/2008/04/03/2248643.aspx

接口和抽象类是面向对象语言(C++/C#/JAVA等)提供的一种抽象和封装机制,在某种情况下,抽象类和接口之间可以互用,但从语言和技术角度来分析,两者之间既有相同也有不同。两者在软件架构和设计模式中有着相当重要的作用,扮演着重要的角色。

相同:

1. 两者都是一种抽象机制,都不能创建具体的对象,都要通过继承来实现它的方法

2. OO的基础,在软件层次和设计模式上有大量的应用

 不同:

1. 抽象类描述的是一种"is a"的关系,即派生类是一种基类或抽象类
    接口则表示一种契约,表明类具有什么功能,是一种"Can do"的关系

2. 抽象类既可以有没实现的抽象成员,也可以有具体的成员
    接口只是一种抽象,没有具体的实现

3. 抽象类不支持回调
    接口支持回调

4. 抽象类只支持单重继承
    接口支持多重继承,一个类只能派生于一个基类,但可以实现多个接口

在具体的编程中,基于“面向接口编程”的理念,我们一般采用抽象类实现接口,实体类派生于抽象类。
在我的前几篇文章中基本上都可以看到接口的抽象类的应用。

实践中领悟理论是最好的方法!

你可能感兴趣的:(软件架构,.Net,设计模式,C#)