为简单起见,假设您有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能够接收任何类型的狗并调用相同的方法而不管狗的类型。
任何提示将不胜感激!谢谢
答案 0 :(得分:2)
如果合法地存在两个具有不同参数列表的walk
方法,并且一个方法适用于子集,则层次结构错误。
你需要两个接口Walkable1
和Walkable2
(组成名称,在“现实生活中”使用更好的名字);然后使用第一个walk
方法的狗实现一个接口,而需要第二个walk
的狗使用第二个接口。如果狗可以实现两个walk
方法,它实现两个接口。