我有一个类 TDevice。某些设备将具有蜂窝模块。所以我创建了一个接口(interface) IIMEI。其他设备将具有以太网模块。所以我创建了一个接口(interface) IMacAddress。

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

在德尔福中可以吗?

最佳答案

最简单的选择是从 TInterfaced Object 派生 TDevice 并使用其他方法扩展您的后代。但是,请注意接口(interface)引用计数,否则您最终会遇到许多意外的访问冲突。

或者,您可以编写一个继承自 TInterfacedObject 的包装器对象,并将接口(interface)的实现委托(delegate)给 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;

关于delphi - 我可以创建一个从类和 Delphi 中的接口(interface)继承的类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1039654/

10-10 17:37