如何正确实现接口?
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
中实现的名称相匹配 - 即 sub
、mul
和 div
而不是 subtract
、multiply
和 @ 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; 不在控制台上打印实际值。
【讨论】:
以上是关于如何正确实现接口?的主要内容,如果未能解决你的问题,请参考以下文章
不确定如何正确实现 ChangeNotifierProvider 以记住 Flutter 中的登录用户
springboot中如何注入一个多个实现类service接口