【问题标题】:How can I implement interface correctly?如何正确实现接口?
【发布时间】:2022-01-23 21:26:03
【问题描述】:

我正在做一个使用java和java接口制作一个简单计算器的作业。但是实现java的类给出了错误提示

The public type `BasicCalculator` must be defined in its own file
        The type `BasicCalculator` must implement the inherited abstract method `calculate.mul(int, int)

这里是代码

interface calculate{
    public int add(int a, int b);
    public int sub(int a, int b);
    public int mul(int a, int b);
    public int div(int a, int b);
}

public class BasicCalculator implements calculate { 
    public int a;
    public int b;

    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }

    public int multiply(int a, int b) {
        return a * b;
    }

    public int division(int a, int b){
        return a/b;
    }
}

public class test {
    public static void main(String[] args) {
        calculate c= new BasicCalculator();
        c.add(5,6);
    }
}

【问题讨论】:

  • 什么错误信息不清楚?它说得差不多了,你必须把BasicCalculator放在它自己的文件中,并让它实现mul,而不是multiply。所有其他方法也是如此
  • 您的 int 除法将丢弃分数。那是你要的吗?并确保您正确实施每个方法之前放置@Override。

标签: java methods interface compiler-errors abstract


【解决方案1】:

这里有几个问题。

首先,由于BasicCalculator是一个公共类,需要在自己的文件BasicCalculator.java中定义。

其次,BasicCalculator 中的方法名称必须与您尝试在 calcualte 中实现的名称相匹配 - 即 submuldiv 而不是 subtractmultiply 和 @ 987654330@.

【讨论】:

  • 解决了这个问题。解决了。谢谢
【解决方案2】:

将测试类发送到它自己的类中,而不是与BasicCalculator.java在同一个类中,因为java通常不像C那样喜欢以这种方式处理类。

然后在您已实现的每个方法之上添加@Override,以便代码如下:

 @Override
public int div(int a, int b) {
    return 0;
}

例如这样。

这里发生的事情是,由于您正在实现接口,因此您需要在要实现的类中包含所有方法。

最后当你运行 test.java 时,添加 System.out.println(c.add(5, 6)); 例如,因为返回 x; 不在控制台上打印实际值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2018-07-20
    • 2011-04-04
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多