C++中一个类可以继承自两个基类,D里貌似不行~~要实现类似的功能,怎么弄?网上查了下,
有人说,这样弄 :(假设两个基类是 TBaseA、TBaseB,派生类是 TMy),从TBaseA派生,然后 在 TMy 的成员里加入 TBaseB 的实例 ...  这样 多态等等的事情就没办法了... 不太喜欢这样的方式...还有人说 ,用接口的方式 ,但是 接口 不太会弄... 接口 弄出来 多态 等特性还能有么???请指教下 ,希望给点简单的示例代码,谢谢~~~

解决方案 »

  1.   

    那 稍微写几句代码吧~~我接口看的乱78糟... 
    我看了李伟InsideVCL里有个 接口的委托 ,但是感觉 这种委托怎么跟 在“TMy 的成员里加入 TBaseB 的实例”的方式差不多啊... (脑子晕啊...)
      

  2.   

    IA,和IB,分别实现A和B的接口,然后C继承自 IA,IB,那么在C中必须实现IA和IB的接口就是了
      

  3.   

    像这样?:type
      IA = interface  end;  IB = interface  end;  TA = class(TInterfacedObject, IA)  end;  TB = class(TInterfacedObject, IB)  end;  TC = class(TInterfacedObject, IA, IB)
      private
        Fia :IA;
        Fib :IB;
      public
        property intfA:IA read Fia implements IA;
        property intfB:IB read Fib implements IB;
      end;怎么老感觉跟下面这样 差不多啊 :...type
      TA = class  end;  TB = class  end;  TC = class(TA)
      private
        Fb :TB;
      end;
      

  4.   

    delphi 2006以后 有Class Helpers 
    可以看看 也不错的。。
    http://topic.csdn.net/t/20060522/16/4770149.html
      

  5.   

    这些内容在《Delphi 7高级应用开发教程》里面有。
      

  6.   

    Delphi不支持多继承, 如果编程需要,可以通过接口,以多接口形式实现。 
     
      

  7.   

    接口是必须实现的
    4楼前面的那部分!后面的是另外的方法!
    比方 TA.TB(TB的实例化对象).TB的方法!
    在TC类里面同时提供TA与TB类的方法,然后分别调用各自的方法,
    这个不强制实现的,用到哪个就可以公布那个方法
      

  8.   

    我就是感觉啊 ,4楼的 上半部分 和 下半部分 怎么用起来感觉差不多的啊??4楼 上半部分用 接口的委托(使用对象接口委托) ,也是 在TC.Create里面 先创建 Fia、Fib 然后在 TC里卖弄使用Fia、Fib ...
      

  9.   

      TC = class(TInterfacedObject, IA, IB)
      private
        Fia :IA;
        Fib :IB;
      public
        property intfA:IA read Fia implements IA;
        property intfB:IB read Fib implements IB;
      end;
    你弄错了! 这个不是这样的! 如下
      TC = class(TInterfacedObject, IA, IB)
      private
      public
        //必须实现IA的所有方法
        //必须实现IB的所有方法
      end;
      

  10.   

    你可以在IA 和IB里面加个方法,然后编译下就知道了