两个接口有相同的方法

本文关键字:方法 接口 两个 | 更新日期: 2023-09-27 17:51:03

Interface A
{
    int Add(int a,int b);
}
Interface B
{
    int Add(int a,int b);
}
Class D : A, B
{
    int Add(int a,int b)
    {
        return a+b;
    }
}

代码工作正常,没有产生任何错误。类D正在使用哪个接口的方法?

两个接口有相同的方法

都没有,因为两个接口都没有方法,只有方法签名。您在D中的方法实现了两个接口提供的签名,因此它可以工作。

请记住,接口仅仅指定了必须存在于实现中的方法的签名。

由于两个接口上的方法签名是相同的,并且类D实现了这些方法(使用单个函数),那么该函数实现哪个接口并不重要,因此编译器很高兴。

但是,通过将函数声明为

,可以为每个接口指定两个不同的实现
class D : A, B
{
    int A.Add(int a, int b)
    {
    }
    int B.Add(int a, int b)
    {
    }
}
类D正在使用哪个接口的方法?

。接口没有方法,它们只定义实现应该具有的方法签名。你想反了。

  • D没有用A或B的方法。
  • A在任何实现了D的A实例上使用D的方法
  • B在任何实现了D的B实例上使用D的方法

D通过提供该方法同时满足接口A和接口B。

相关文章: