Java 编译器不识别I';我们已经从它实现的接口实现了compareTo()方法
我正在由抽象类AbstractAffiliate实现一个接口“Comparable”,它由抽象类AbstractFaculty扩展,由常规类助手扩展 在助手类中实现compareTo方法时(该方法已在上述所有类/接口中声明),编译器会给出此错误 java:1:错误:助手不是抽象的,并且在抽象中不重写抽象方法compareTo() 官能 公共课助教{ ^ 1错误 我已经尝试将其作为泛化器添加到工具中 抽象附属公司 助手Java 编译器不识别I';我们已经从它实现的接口实现了compareTo()方法,java,interface,abstract-class,comparable,Java,Interface,Abstract Class,Comparable,我正在由抽象类AbstractAffiliate实现一个接口“Comparable”,它由抽象类AbstractFaculty扩展,由常规类助手扩展 在助手类中实现compareTo方法时(该方法已在上述所有类/接口中声明),编译器会给出此错误 java:1:错误:助手不是抽象的,并且在抽象中不重写抽象方法compareTo() 官能 公共课助教{ ^ 1错误 我已经尝试将其作为泛化器添加到工具中 抽象附属公司 助手 公共课堂助理{ 私人国际年Suntiltenure; 公共助理(){ 超级()
公共课堂助理{
私人国际年Suntiltenure;
公共助理(){
超级();
年份suntilenure=0;
}
公共助理(字串名称、字串年龄、字串地址、字串电话号码、字串年份、字串管理员、字串系主任、字串系主任、字串年鉴、字串年鉴、字串年鉴){
super(姓名、年龄、地址、电话号码、年份他们的姓名、学院ID、系、年度日历、论文编号);
this.yearsUntilTenure=yearsUntilTenure;
}
公共字符串打印(){
返回“是”;
}
公共国际比较(抽象附属公司){
if(this.year They Cametochapmanaffiliate.year Theycametochapman){
返回-1;
}
否则{
返回0;
}
}
}
```[在此处输入图像描述][1]
[1]: https://i.stack.imgur.com/Xdz2F.png
您尚未实现抽象方法。抽象方法.compareTo()
方法不接受任何参数。相比之下,您在助手
类中实现的版本将AbstractAffiliate
作为参数。由于它们有不同的参数,因此它们的方法完全不同
乍一看,采用参数的版本似乎就是您想要的版本,这应该由您的基类实现
Comparable
,所以只需删除抽象compareTo()
方法完整,您应该很好。这是因为您已声明要实现CompariableCompariable#Comparieto的方法签名如下:
public int compareTo(T o);
但在助手及其父类中,您添加了一个抽象方法
public abstract int compareTo();
这与Comparable#compareTo
中的方法不同。只需从其父类中删除public abstract int compareTo();
方法即可解决问题,无需反复声明。public abstract int compareTo()如果没有参数,你会把它和什么比较?也许我遗漏了什么,但是你在抽象类中声明了public abstract int compareTo();
,但是你实现了public int compareTo(AbstractAffiliate){…
所以你仍然需要实现compareTo();
(或将其从抽象类中删除)。但是,这个抽象compareTo方法是在Comparable接口中定义的,因此不需要再次声明。@AndyTurner很好。我没有将代码滚动到足够远的地方来注意到这一点。愚蠢的笔记本电脑小屏幕。借口:我在手机上:)
public class Assistant extends AbstractFaculty{
private int yearsUntilTenure;
public Assistant(){
super();
yearsUntilTenure = 0;
}
public Assistant(String name, int age, String address, int phoneNumber, int yearTheyCameToChapman, int facultyId, String department, int yearlySalary, int numberOfPapers, int yearsUntilTenure){
super(name, age, address, phoneNumber, yearTheyCameToChapman, facultyId, department, yearlySalary, numberOfPapers);
this.yearsUntilTenure = yearsUntilTenure;
}
public String print(){
return "yup";
}
public int compareTo(AbstractAffiliate affiliate){
if (this.yearTheyCameToChapman < affiliate.yearTheyCameToChapman){
return 1;
}
if (this.yearTheyCameToChapman > affiliate.yearTheyCameToChapman){
return -1;
}
else{
return 0;
}
}
}
```[enter image description here][1]
[1]: https://i.stack.imgur.com/Xdz2F.png
int compareTo(AbstractAffiliate o)
public int compareTo(T o);
public abstract int compareTo();