我有界面mamal有函数walk
Interface Mamal{
void walk();
}
我在班级狗实现接口mamal
class dog:Mamal{
void walk(){}
}
如何在函数walk中添加参数,以便函数
class dog:Mamal{
void walk(int distance){}
}
答案 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){}
}