我有一个面试问题-C#,是否可以在一个类中实现,从一个接口继承有两个具有相同名称和相同签名的方法?
答案 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的方法上有不同的行为,那么这种实现方法将无效。在这种情况下,你必须接受汤姆的回答