如何正确实现接口?

Posted

技术标签:

【中文标题】如何正确实现接口?【英文标题】: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。 【参考方案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; 不在控制台上打印实际值。

【讨论】:

以上是关于如何正确实现接口?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确检查对象是不是实现接口

C++:如何正确的定义一个接口类

不确定如何正确实现 ChangeNotifierProvider 以记住 Flutter 中的登录用户

springboot中如何注入一个多个实现类service接口

实现 COM 接口 C++ / VC++ 6.0 / MFC

如何在Java中包含多个方法?枚举不是正确的方法吗?