【发布时间】:2020-02-15 06:35:24
【问题描述】:
我在一个抽象类中有一个抽象方法,Student。 子类 JUPASStudent 覆盖它。 现在我正在尝试对 Student 类型的 ArrayList 进行排序。它需要调用该抽象方法,但我无法这样做。
我在这里写我的部分代码。
超类:
abstract class Student {
protected String name;
public Student (String name) {
this.name = name;
}
public String getName() {
return name;
}
abstract double getResult(); //abstract method
}
子类:
public class JUPASStudent extends Student {
private double dseResult;
public JUPASStudent(String n, double d) {
super (n);
this.dseResult = d;
}
public double getResult() {
return dseResult; //abstract method is overridden here
}
public String getName() {
return super.name;
}
public void setResult(double dseResult) {
this.dseResult = dseResult;
}
public void setName(String name) {
super.name = name;
}
}
现在我正在编写一个排序函数来制作一个 ArrayList(学生班)
public ArrayList <Student> sort(ArrayList<Student> sList){
sList.sort(Comparator.comparingInt(Student::getResult));
return sList;
}
输入:
A 9
B 5
C 8
预期输出:
B 5
C 8
A 9
错误
-The method comparingInt(ToIntFunction<? super T>) in the type Comparator is not applicable for the arguments (Student::getResult)
-The type Student does not define getResult(T) that is applicable here
【问题讨论】:
-
你能说说你想要达到的目标吗?
-
无需覆盖
getName() / setName() -
“但我做不到” ...为什么?发生了什么?
-
我正在尝试按录取结果的升序对 ArrayList
数组列表中的学生进行排序@K.D. -
@Tom 我已经编辑了问题并在最后提到了错误
标签: java sorting methods polymorphism superclass