两个接口具有相同的方法

时间:2014-03-20 14:36:41

标签: c# .net

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类是使用哪种接口的方法?

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

但是,通过将函数声明为

,可以为每个接口提供两种不同的实现
class D : A, B
{
    int A.Add(int a, int b)
    {
    }

    int B.Add(int a, int b)
    {
    }
}

答案 2 :(得分:1)

  

D类正在使用哪个接口的方法?

都不是。接口没有方法,它们只定义实现应该具有的方法签名。你正在考虑倒退。

  • D不使用A或B的方法。
  • A在A的任何实例上使用D的方法,其中D为其实现。
  • B在B的任何实例上使用D的方法,其中D为其实现。

D通过提供该方法满足接口A和B.