1

假设我有这 3 个课程

class Human
  public void eat()

class Lawyer extends Human
  public void beEvil()

class Murderer extends Human
  public void beEvil()
  public void kill()

现在我有一个动作处理程序,我想在不知道我是什么的情况下处理动作。例如:

handleBeEvil(Human human)
{
    ..
    human.beEvil(); //wont obviously work
    ..
}

例如,在 as3 中,我会使用

handleBeEvil(Object human)
{
   human.beEvil(); //would pass compiler, work or break runtime
}

在 Java 中完成此任务的最佳方法是什么?我想避免将所有的声明都放在 Human 类中。

4

1 回答 1

2

创建一个接口并同时拥有LawyerMurderer实现它(即class Lawyer extends Human implements Evil):

interface Evil {
    void beEvil();
}

那么你的方法是

... handleBeEvil(Evil human)
{
    ..
    human.beEvil();  // now this will work
    ..
}
于 2012-12-07T23:13:25.337 回答