我想要派生类中的方法覆盖 CONCRETE 基类中的虚拟方法并返回如下内容(即不是 void):
public class HelloWorldApp
{
public static void main(String args[])
{
Bar bar = new Bar();
bar.go();
}
}
public class Foo
{
public void go()
{
System.out.print(this.test().toString());
}
protected Integer test()
{
return 1;
}
}
public class Bar extends Foo
{
@Override
protected Integer test()
{
return 2;
}
}
有没有办法在没有多余的“return 1;”的情况下做到这一点在 Foo.test() 中,它永远不会运行。显然它工作得很好,但似乎我做了一些严重错误的事情。
最佳答案
此答案是在问题更新之前创建的,以表明基类必须是具体的。
<小时/>如果您希望永远不会运行 Foo
的 test
方法,请通过使 Foo
类 abstract< 来强制执行它
,其中 test
为 abstract
。
public abstract class Foo {
public void go() {
System.out.print(this.test().toString());
}
abstract protected Integer test();
}
关于java 不返回void的虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917821/