java - 处理子类中不需要的参数? (java)

标签 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(),但假设吉娃娃只需要/使用第一个参数,而哈士奇在其 walk 方法中需要两个参数。

我不想在界面中创建单独的方法,因为我只想使用一种方法,但我只想拥有一种方法。我知道我可以“忽略”吉娃娃步行方法中的额外参数,但是有没有更干净的方法来做到这一点?我可以在实际代码中更改这些类的几乎所有内容(实际上与狗无关......),除了我需要 DogWalker 能够接受任何类型的狗并调用相同的方法,无论狗的类型。

任何提示,我们将不胜感激!谢谢

最佳答案

如果存在两个具有不同参数列表的不同 walk 方法,并且其中一个方法应用于子集,那么层次结构就是错误的。

您需要两个接口(interface)Walkable1Walkable2(虚构的名称,在“现实生活”中使用更好的名称);然后,使用第一个 walk 方法的狗实现一个接口(interface),而需要第二个 walk 方法的狗则使用第二个接口(interface)。如果狗可以实现两个 walk 方法,那么它就实现了两个接口(interface)。

关于java - 处理子类中不需要的参数? (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540258/

相关文章:

c# - 如何避免转换到特定界面

haskell - 如何在 Haskell 98 下编写多态函数

c++ - 从多态基指针调用基类方法很慢

java - JTable 中的日期字段格式

java - 嵌套 if 语句与条件中的复杂逻辑

c# - 类型 'TNestedInterface' 必须可转换为 'INestedInterfaceTest' 才能将其用作参数 'TNestedInterface'

c# - 在 C# 中使用泛型和接口(interface)时如何避免强制转换

java - 将 @Filter 与 @ManyToOne 关系一起使用

java - 在Java中将字节数组转换为整数,反之亦然

c++标准实践: virtual interface classes vs.模板