允许不同的参数而不重载方法?

时间:2013-11-11 19:53:41

标签: java overloading

求助:谢谢大家的帮助,我最终在人员中覆盖了这个方法,就像你们几个人说的那样。我的问题是,角色甚至没有做某事,所以我最终做的只是在角色中添加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中找到它。

1 个答案:

答案 0 :(得分:4)

public static void giveMessage(Character a, Character b)

应该适用于Persons,因为它是隐式演员

http://en.cppreference.com/w/cpp/language/implicit_cast(我知道它的c ++,但这也适用于java)

它会自动将某人投射到角色