Delphi - 接口和重载指令

4

我对Delphi中的接口有些困惑,所以向您请教。接口可以与抽象类“关联”(它不实现其声明的方法),所有在接口上声明的方法都由实现该接口的类/类中实现。

那么,为什么允许在接口方法声明上使用overload指令呢?

type 
 IFoo = interface
  function Test : String; overload;
 end;

编译器对此保持安静。

我不明白你关于接口的前两个陈述与你的问题有什么关系。是的,接口与类相关联,而且类实现了接口的方法。但你为什么认为这些与在接口方法上使用“overload”有关呢?请澄清你的问题。 - Rob Kennedy
此外,“visibility operators”是什么意思? - Uwe Raabe
我希望现在问题更清楚了。 - RBA
@RBA:为什么你不应该被允许使用重载方法? - Andreas Rejbrand
@Andreas,在阅读他对da-softs答案的评论时,他可能会被overload和override所困惑。 - Uwe Raabe
不,RBA,你的编辑并没有解决我的困惑。也许你对overload指令的含义感到困惑。请分享一下您对该指令的理解,然后我们就能明白为什么您对其在接口方法上的使用感到困惑了。或许到那时,我们还能理解为什么您认为类与此有关系。 - Rob Kennedy
1个回答

10
  1. overloaded 允许在单个类/接口中具有几个同名方法,但它们的参数集不同。
  2. 你的接口有一个 Test 方法。由于只有一个方法,所以不需要 overloaded。但是如果需要,你可以引入其他带有不同参数集的 Test 方法。
  3. 可能你正在考虑使用 override 指令...

在接口的方法声明中不能放置override指令。+1 for the answer - RBA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接