【问题标题】:is not abstract and does not override abstract method [duplicate]不是抽象的,也不会覆盖抽象方法[重复]
【发布时间】:2021-09-01 18:58:51
【问题描述】:
我有作业,当我运行它时,它会给我这个消息
(不是抽象的,也不会覆盖抽象方法)
我使用一个界面,应该可以正常运行
interface Employee1212 {
int retirementAge = 60;
double generateSalary();
double getBonus(double a, double b);
}
public class Manager implements Employee1212 {
public double generateSalary() {
return 10.0;
}
double getBonus() {
return retirementAge;
}
}
【问题讨论】:
标签:
java
inheritance
interface
abstract-class
abstraction
【解决方案1】:
你的方法getBonus没有正确实现。
接口方法总是公开的,即使没有修饰符,所以你的实现也需要公开。此外,接口方法定义了两个参数,而您的实现没有。
【解决方案2】:
接口定义了double getBonus(double a, double b);,但你实现了double getBonus()。您需要签名匹配。使用@Override 注解有助于防止此类错误。
public class Manager implements Employee1212 {
@Override
public double generateSalary() {
return 10.0;
}
@Override
public double getBonus(double a, double b) {
return a * b; // retirementAge?
}
}