【问题标题】:Overloading interface methods in Java [closed]在Java中重载接口方法[关闭]
【发布时间】:2012-10-08 19:10:51
【问题描述】:

我有以下代码:

public interface Block {
    public double[] getOutput();
    public double[] getOutput(double[] inputs);
}

public class Dataset implements Block{

    public double[] getOutput(){
        return(new double[0]);
    }
}

我正在使用 netbeans IDE,它会产生以下消息:

Dataset is not abstract and does not override abstract method getOutput(double[]) in Block

我不确定为什么会这样......任何帮助将不胜感激

谢谢

【问题讨论】:

  • 你不明白它在告诉你什么吗?
  • 你的类中这个public double[] getOutput(double[] inputs);方法的实现在哪里(按照惯例)?
  • 我误解了函数重载的工作原理,我相信。我假设我只需要为 Block 中的两个函数之一提供一个实现,具体取决于我是否传递任何参数。

标签: java interface overloading


【解决方案1】:

您的Dataset 类必须提供getOutput(double[]) 函数的实现。正如所写,它只提供了getOutput() 的实现(没有参数)。

【讨论】:

  • 也许我误解了函数重载 - 我假设我只需要为这两个函数之一提供一个实现,因为它们是重载的?
  • Java 认为具有不同参数的函数(即使它们具有相同的名称)是不同的函数,它们分别处理。您必须同时覆盖它们。
  • 好的,感谢您的帮助
【解决方案2】:

您的界面需要两种方法,而您提供了一种。 QED。

【讨论】:

    【解决方案3】:

    错误说它很好。实现接口时需要实现接口的所有方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多