Delphi中的接口用 interface 进行声明。接口是针对行为方法的描述,而不管他实现这种行为方法的是对象还是别的什么东西。因此,接口和类的出发点是不一样的,是在不同的角度看问题。

接口通过GUID进行唯一标识。(Delphi IDE中按Ctrl+Shift+G 产生GUID)

高版本的Delphi已经用IInterface 进行统一接口的定义(不知道从哪个版本开始)。

IInterface = interface
  ['{00000000-0000-0000-C000-000000000046}']

  // 查询类是否实现了某个接口,调用 TObject.GetInterface 方法
  function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;         
  function _AddRef: Integer; stdcall;          //对象引用计数
  function _Release: Integer; stdcall;         //对象引用减数
end;

IUnknown = IInterface;

 

_AddRef和_Release方法,要求实现类必须实现,主要的目的是对“对象”进行管理,以便知道接口的释放。

接口使用:

可以使用Supports方法判断,也可以用 as 转换。

软件面向接口编程,这样就会灵活,可扩展。

最新文章

  1. [转]Json转换神器之Google Gson的使用
  2. Compute Mean Value of Train and Test Dataset of Caltech-256 dataset in matlab code
  3. Knockout JS 入门示例
  4. [转]Linux的tail 与head 命令
  5. 链表回文串判断&&链式A+B
  6. 泛型,迭代器,LinkedList<E>
  7. Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池
  8. ORACLE AWR概述及生成AWR报告
  9. 关于html中利用jQuery选择子节点方法总结——待续
  10. 【LeetCode】332. Reconstruct Itinerary
  11. sqlite ef6
  12. linux硬盘挂载-新硬盘挂载和扩容硬盘挂载
  13. MySQL Split 函数
  14. Codeforce 733B - Parade (枚举)
  15. git checkout -b 分支name 分支的新建, 切换, 删除, 查看
  16. Spring Mvc如何通过注解的方式设置视图解析器的优先级
  17. eclipse启动genymotion插件reg启动visual box 虚拟机
  18. 做更好的自己 ——读《我是IT小小鸟》有感
  19. Zabbix高可用
  20. MongoDB wiredTiger存储引擎下的存储方式LSM和B-Tree比较

热门文章

  1. 36种漂亮的CSS3网页按钮Button样式
  2. JQueryDOM节点操作
  3. 修改android Studio SDK 路径产生的问题(模拟器不能启动了)
  4. leetcode553
  5. 【转】正则表达式简介及在C++11中的简单使用教程
  6. Excel VBA入门(二)数组和字典
  7. Apache Hive (四)Hive的连接3种连接方式
  8. C#给图片加文字水印
  9. 登录模块(前端bookstrapValidator校验+加密+后台加密+后台验证)
  10. 10-最小生成树-Prim算法