在子类中处理w /不需要的参数? (Java)的

时间:2016-09-16 21:22:10

标签: java interface polymorphism

为简单起见,假设您有4个这样的类:

Dog (Interface) - has method "walk(SomeObject a, SomeOtherObj b)"
Husky - implements Dog
Chihuahua - implements Dog
DogWalker - has a variable Dog someDog, and calls the walk method

我们想在DogWalker中使用相同的方法在任何类型的狗上运行walk(),但是让我们说Chihuahua只需要/使用第一个参数,而Husky在其walk方法中需要两个参数。

我不想在界面中创建一个单独的方法因为我只想使用一个方法,但我想要只使用一个方法。我知道我可以“忽略”Chihuahua的walk方法中的额外参数,但有更清洁的方法吗?我可以在实际代码中更改这些类的任何内容(实际上并不是关于狗......),除了我需要DogWalker能够接收任何类型的狗并调用相同的方法而不管狗的类型。

任何提示将不胜感激!谢谢

1 个答案:

答案 0 :(得分:2)

如果合法地存在两个具有不同参数列表的walk方法,并且一个方法适用于子集,则层次结构错误。

你需要两个接口Walkable1Walkable2(组成名称,在“现实生活中”使用更好的名字);然后使用第一个walk方法的狗实现一个接口,而需要第二个walk的狗使用第二个接口。如果狗可以实现两个walk方法,它实现两个接口。