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

25 篇文章 0 订阅
11 篇文章 0 订阅

作者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. 抽象类只支持单重继承
    接口支持多重继承,一个类只能派生于一个基类,但可以实现多个接口

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值