我可以创建一个继承自类和Delphi接口的类吗?

时间:2009-06-24 17:01:44

标签: delphi inheritance interface

我有一个TDevice课程。有些设备会有蜂窝模块。所以我创建了一个接口IIMEI。其他设备将具有以太网模块。所以我创建了一个接口IMacAddress。

所以,我想创建另一个类,它是TDevice的子类,并实现IIMEI或IMacAddress或两者。

Delphi有可能吗?

1 个答案:

答案 0 :(得分:3)

最简单的选择是从TInterfaced对象派生TDevice,并使用其他方法扩展您的后代。但要注意接口引用计数,否则最终会出现许多意外的访问冲突。

或者,您可以编写一个从TInterfacedObject继承的包装器对象,并将接口的实现委托给TDevice后代。在这种情况下,引用计数将不再是一个问题。

TMacAddressWrapper = class(TInterfacedObject, IMacAddress)
private
  FDevice: TDevice;
  property Device: TDevice read FDevice implements IMacAddress;
public
  constructor Create(_Device: TDevice);
end;

constructor TMacAddressWrapper.Create(_Device: TDevice);
begin
  inherited Create;
  FDevice := _Device;
end;