一个接口 - 具有相同名称和签名的两个方法

时间:2018-05-25 01:57:26

标签: c#

我有一个面试问题-C#,是否可以在一个类中实现,从一个接口继承有两个具有相同名称和相同签名的方法?

2 个答案:

答案 0 :(得分:2)

没有相同的界面。如果你有2个带有相同签名的方法的接口,那么一个类实现就可以实现这两个。

答案 1 :(得分:0)

  

是否可以在类中实现,继承自接口有两个具有相同名称和相同签名的方法?

不,实现一个界面你不能。

  

是否可以在类中实现,继承自接口有两个具有相同名称和相同签名的方法?

是的,汤姆的答案显示了如何。

但是当两个接口要求你的类实现一个具有相同名称和签名的方法时,你也可以这样做。

interface ILandAnimal
{
    void ToWalk();
    void ToBreed();
}
interface IWaterAnimal
{
    void ToSwim();
    void ToBreed();
}

public class Amphibians : ILandAnimal, IWaterAnimal
{
    //only one implementation of ToBreed ()
    //  (which is there in both interface)
    public void ToBreed() { }
    public void ToWalk() { }
    public void ToSwim() { }
}

在大多数情况下,两个接口都有两个方法,因为两个接口都与类合同实现一个这样的方法,这对于(并且没有多大意义)真的没有关系(也没有多大意义)与接口包含相同名称和相同签名的。

并且只实现一个方法来满足这两个接口的合同。

例如:在上面的代码中,Land Animal和Water Animal的接口都要求其继承者具有繁殖功能。类Amphibians确实继承了它们,因为它必须具有陆地和水动物的所有功能。仍然只有一种方式(实施)来繁殖。因此,不需要制作两种育种方法。

如果您的类必须在interface1的方法上有一个行为,并且在interface2的方法上有不同的行为,那么这种实现方法将无效。在这种情况下,你必须接受汤姆的回答