Java - 错误:返回类型不兼容

mik*_*ike 7 java inheritance overriding return-type

我正在学习java.我试图运行代码,我得到了这个错误:return type is incompatible.代码中显示错误的部分代码.

class A {
    public void eat() { }
}

class B extends A {
    public boolean eat() { }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

sgo*_*les 10

这是因为我们不能在具有相同名称但返回类型不同的类中使用两个方法.

子类不能使用不同的返回类型声明具有与超类中已存在方法相同名称的方法.

但是,子类可以声明一个方法,其签名与超类中的签名相同.我们称之为"Overriding".

你需要这个,

class A {
    public void eat() { }
}

class B extends A {
    public void eat() { }
}
Run Code Online (Sandbox Code Playgroud)

要么

class A {
    public boolean eat() { 
        // return something...
    }
}

class B extends A {
    public boolean eat() { 
        // return something...
    }
}
Run Code Online (Sandbox Code Playgroud)

一个好的做法是通过注释标记覆盖的方法@Override:

class A {
    public void eat() { }
}

class B extends A {
    @Override
    public void eat() { }
}
Run Code Online (Sandbox Code Playgroud)