单元 unitA中有:
 TFlowEngineImpl = class(TDataModule, IFlowEngine)
    qryDispWorker: TSmartQuery;
    qryProcinst: TSmartQuery;
    .......查看IFlowEngine的定义如下:
在单元 unitB中
IFlowEngine = interface
    function a()......
    function b()......
    function c()......
    ....但是在该单元的implementation部分没找到任何以上function的实现。
查找发现以上function的实现都在unitA的TFlowEngineImpl中声明并实现。我有两点不明白:
1.delphi好像不支持多继承,TFlowEngineImpl = class(TDataModule, IFlowEngine)
是不是表示多继承?如果不是,那是何意思?为什么要这么写?
2.interface是起到什么作用?以前没有涉及过这样的写法。

解决方案 »

  1.   

    interface是可以多继承的Windows下的接口,用于组件的复用的
    最好看看MSDN的介绍了http://lysoft.7u7.net
      

  2.   

    Interface是可以多继承的 就是就是
      

  3.   

    LY兄,可否稍微详细一点介绍一下?忽然看msdn感觉有点茫然……
    不是太懂。
      

  4.   

    interface是接口,只定义可供客户端调用的方法,不具体实现,有点类似于抽象类。
    接口可以多继承,子类必须实现完所继承的接口的方法。
      

  5.   

    TFlowEngineImpl = class(TDataModule, IFlowEngine)不是表示多继承,这是定义了一个实现接口IFlowEngine的类TFlowEngineImpl,TFlowEngineImpl继承于TDataModule,同时也实现接口IFlowEngine的功能。至于为什么这样写,你的去看看有关COM方面的书,里面都会有接口的介绍的。
    interface其实是定义了一个接口,和class关键字是一样的意思,其实完整的应该是interface(IUnknown)
    所有接口都继承IUnknown.
      

  6.   

    interface是可以多继承的
    就是接口,与PUBLIC中的函数有些相似之处,但在OO的定义中不是同一个东西
      

  7.   

    你把interface想想成特殊的类把,函数不需要实现,定义不允许有成员变量,可以多继承,所有函数都是虚拟的。而且全部都是统一从IInterface继承下来的
      

  8.   

    interface是接口,像JAVA中的抽象类.必须由它的子类来完成
    它所定义的抽象方法.
      

  9.   

    我读了楼上的回贴,感觉interface好像类的虚方法!,好像也就是说对像的多态性吧
      

  10.   

    李维 Inside VCL 中有详细的讲解