求助:谢谢大家的帮助,我最终在人员中覆盖了这个方法,就像你们几个人说的那样。我的问题是,角色甚至没有做某事,所以我最终做的只是在角色中添加doSomething而不返回任何内容。这是因为我只需要担心a(一个人).doSomething(b)(一个角色)的情况。
所以,我有一个方法,它有两个参数,字符a和字符b。
public static void giveMessage(Character a, Character b)
如果参数是Person a(它是字符的子类),我希望这个方法也可以工作,字符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中找到它。
答案 0 :(得分:4)
public static void giveMessage(Character a, Character b)
应该适用于Persons,因为它是隐式演员
http://en.cppreference.com/w/cpp/language/implicit_cast(我知道它的c ++,但这也适用于java)
它会自动将某人投射到角色