我有一个类 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/