如果我有一个实现接口的对象,它会默认将接口方法自动映射到具有相同名称和签名的类的方法上。有没有办法覆盖它并将接口方法映射到具有相同签名但名称不同的方法? (这可能很有用,例如,如果我实现了两个接口,这两个接口都有一个具有相同名称和签名的方法,我希望能够用它们做不同的事情。)
答案 0 :(得分:9)
这是Erwin回答的代码示例
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;
答案 1 :(得分:8)
确实有可能。该技术称为Method Resolution Clause。