如何正确实现接口?

How can I implement interface correctly?

我正在做作业,使用 java 和 java 中的界面制作一个简单的计算器。但是实现 java 的 class 给出错误说

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 是 public class,因此需要在其自己的名为 BasicCalculator.java.

的文件中定义它

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

将测试 class 发送到它自己的 class 而不是与 BasicCalculator.java 相同的 class,因为 java 通常不喜欢与 C.

不同,以这种方式处理 classes

然后在您已实现的每个方法之上添加@Override,这样代码将变为:

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

比如这样。

这里发生的事情是因为你正在实现你的接口,所以你需要在你正在实现的 class 中包含所有方法。

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