已解决:谢谢大家的帮助,我最终像你们几个人说的那样重写了 Person 中的方法。我的问题是 Character 甚至没有 doSomething,所以我最终做的只是简单地向 character 添加 doSomething 并且什么都不返回。这是因为我只需要担心 a(a).doSomething(b)(a character) 的情况。
因此,我有一个采用两个参数的方法,字符 a 和字符 b。
public static void giveMessage(Character a, Character b)
如果参数是 Person a(角色的子类),Character b,我希望此方法也有效
public static void giveMessage(Person a, Character b)
我知道我可以通过重载方法来做到这一点,但它后面有大约 15 行代码。因此,如果我将它重载 3 次,它就会变得冗长。这样做我真的没有问题,我只是想知道是否有更简单的方法。
更多信息:
giveMessage(Character a, Character b){
if(a instanceof Person){
a.doSomething(b)
doSomething 只能在 Person 中找到,所以它给我一个错误,它无法在 Character 中找到它。
最佳答案
public static void giveMessage(Character a, Character b)
应该适用于 Persons 因为它是一个隐式转换
http://en.cppreference.com/w/cpp/language/implicit_cast (我知道它的 C++,但这也适用于 Java)
它会自动将一个人转换成一个角色
关于java - 允许不同的参数而不重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914703/