2

已解决:谢谢大家的帮助,我最终像你们中的几个人所说的那样覆盖了 Person 中的方法。我的问题是 Character 甚至没有 doSomething,所以我最终做的只是将 doSomething 添加到 character 并且什么都不返回。这是因为我只需要担心 a(a person).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 中找不到它。

4

1 回答 1

4
public static void giveMessage(Character a, Character b)

应该为 Persons 工作,因为它是一个隐式转换

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

它会自动将一个人投射到一个角色

于 2013-11-11T19:56:25.467 回答