为了简单起见,假设您有 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(),但假设吉娃娃只需要/使用第一个参数,而哈士奇在其 walk 方法中需要两个参数。
我不想在界面中创建单独的方法,因为我只想使用一种方法,但我只想拥有一种方法。我知道我可以“忽略”吉娃娃步行方法中的额外参数,但是有没有更干净的方法来做到这一点?我可以在实际代码中更改这些类的几乎所有内容(实际上与狗无关......),除了我需要 DogWalker 能够接受任何类型的狗并调用相同的方法,无论狗的类型。
任何提示,我们将不胜感激!谢谢
最佳答案
如果存在两个具有不同参数列表的不同 walk
方法,并且其中一个方法应用于子集,那么层次结构就是错误的。
您需要两个接口(interface)Walkable1
和Walkable2
(虚构的名称,在“现实生活”中使用更好的名称);然后,使用第一个 walk
方法的狗实现一个接口(interface),而需要第二个 walk
方法的狗则使用第二个接口(interface)。如果狗可以实现两个 walk
方法,那么它就实现了两个接口(interface)。
关于java - 处理子类中不需要的参数? (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540258/