调用函数接口时添加参数

时间:2015-03-04 08:04:17

标签: c#

我有界面mamal有函数walk

Interface Mamal{
    void walk();
}

我在班级狗实现接口mamal

class dog:Mamal{
    void walk(){}
}

如何在函数walk中添加参数,以便函数

class dog:Mamal{
    void walk(int distance){}
}

3 个答案:

答案 0 :(得分:3)

你做不到。界面很严格。你无法改变它。您可以在dog类中实现具有此参数的 second 方法,但它不会是接口中定义的方法。

如果在所有方法中都需要该参数,则可以更改界面。

答案 1 :(得分:2)

通过更改界面。或者不从界面调用该方法。

例如,您现在拥有的代码应该可以正常工作,但walk的参数重载只能在dog对象上调用,而不能在Mamal对象上调用。

或者,您可以更改界面:

Interface Mamal{
    void walk(int distance);
}

或:

Interface Mamal{
    void walk();
    void walk(int distance);
}

这样就可以在Mamal类型上调用重载。或者,您可以使用可选参数。也许是这样的:

Interface Mamal{
    void walk(int? distance = null);
}

这应该允许使用两个重载,并且单个实现方法将检查传入值。

答案 2 :(得分:0)

您的界面描述了实现类应该使用的公共方法 - 包括它们的参数。因此,如果您希望继承类具有1(或2或3 ... n)个参数的可公开访问的方法,则还应在该接口中定义它们。

Interface Mamal{
    void walk(int distance);
}
class dog:Mamal{
    void walk(int distance){}
}
相关问题