java 不返回void的虚方法

标签 java

我想要派生类中的方法覆盖 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() 中,它永远不会运行。显然它工作得很好,但似乎我做了一些严重错误的事情。

最佳答案

此答案是在问题更新之前创建的,以表明基类必须是具体的。

<小时/>

如果您希望永远不会运行 Footest 方法,请通过使 Fooabstract< 来强制执行它,其中 testabstract

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/

相关文章:

java - 接收 Smack 的第一条消息时出现问题

java - 如何在jquery ajax脚本中转换为所需的日期格式

java - 访问被拒绝,嵌入式 Derby 中的问题

java - 如何查找位于 linux box 上的文件的大小并在 java webapp 中显示

java - 在 JavaFX 中使用数据库填充 TableView

java - 计算字符串中数字出现的次数

java - 无法启动 Cassandra(CentOS7 上的单节点集群)

java - Android - MediaPlayer HTTP 错误处理

java - 将 spring bean 注入(inject)未由 spring 实例化的类中

java - 使用 Hibernate 创建架构(表)