C++中一个类可以继承自两个基类,D里貌似不行~~要实现类似的功能,怎么弄?网上查了下,
有人说,这样弄 :(假设两个基类是 TBaseA、TBaseB,派生类是 TMy),从TBaseA派生,然后 在 TMy 的成员里加入 TBaseB 的实例 ... 这样 多态等等的事情就没办法了... 不太喜欢这样的方式...还有人说 ,用接口的方式 ,但是 接口 不太会弄... 接口 弄出来 多态 等特性还能有么???请指教下 ,希望给点简单的示例代码,谢谢~~~
有人说,这样弄 :(假设两个基类是 TBaseA、TBaseB,派生类是 TMy),从TBaseA派生,然后 在 TMy 的成员里加入 TBaseB 的实例 ... 这样 多态等等的事情就没办法了... 不太喜欢这样的方式...还有人说 ,用接口的方式 ,但是 接口 不太会弄... 接口 弄出来 多态 等特性还能有么???请指教下 ,希望给点简单的示例代码,谢谢~~~
我看了李伟InsideVCL里有个 接口的委托 ,但是感觉 这种委托怎么跟 在“TMy 的成员里加入 TBaseB 的实例”的方式差不多啊... (脑子晕啊...)
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;
可以看看 也不错的。。
http://topic.csdn.net/t/20060522/16/4770149.html
4楼前面的那部分!后面的是另外的方法!
比方 TA.TB(TB的实例化对象).TB的方法!
在TC类里面同时提供TA与TB类的方法,然后分别调用各自的方法,
这个不强制实现的,用到哪个就可以公布那个方法
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;