【发布时间】:2009-09-07 18:43:47
【问题描述】:
如果我有一个实现接口的对象,默认情况下,它会自动将接口方法映射到具有相同名称和签名的类的方法上。有没有办法覆盖它并将接口方法映射到具有相同签名但名称不同的方法? (这可能很有用,例如,如果我实现了两个接口,它们都有一个名称和签名相同的方法,并且我希望能够用它们做不同的事情。)
【问题讨论】:
如果我有一个实现接口的对象,默认情况下,它会自动将接口方法映射到具有相同名称和签名的类的方法上。有没有办法覆盖它并将接口方法映射到具有相同签名但名称不同的方法? (这可能很有用,例如,如果我实现了两个接口,它们都有一个名称和签名相同的方法,并且我希望能够用它们做不同的事情。)
【问题讨论】:
这是欧文回答的代码示例
type
ISomeInterface = interface
procedure SomeMethod;
end;
IOtherInterface = interface
procedure SomeMethod;
end;
TSomeClass = class(TInterfacedObject, ISomeInterface, IOtherInterface)
public
procedure ISomeInterface.SomeMethod = SomeInterfaceSomeMethod;
procedure IOtherInterface.SomeMethod = OtherInterfaceSomeMethod;
procedure SomeMethod; // TSomeClass.SomeMethod
procedure SomeInterfaceSomeMethod; // ISomeInterface.SomeMethod
procedure OtherInterfaceSomeMethod; // IOtherInterface.SomeMethod
end;
【讨论】:
确实有可能。该技术称为Method Resolution Clause。
【讨论】: