这是因为在类中不能有两个具有相同名称但返回类型不同的方法。
子类不能使用与返回类型不同的超类中已经存在的方法相同的名称声明方法。
但是,子类可以声明具有与超类相同的签名的方法。我们称此为“覆盖”。
你需要这个
class A { public void eat() { }}class B extends A { public void eat() { }}要么
class A { public boolean eat() { // return something... }}class B extends A { public boolean eat() { // return something... }}一个好的做法是通过注释标记覆盖的方法
@Override:
class A { public void eat() { }}class B extends A { @Override public void eat() { }}


