![](/img/trans.png)
[英]How to call the superclass implementation of an overridden method from inside the superclass in Java?
[英]How to call an abstract method (overridden in subclasses) from the superclass?
我在抽象 class,學生中有一個抽象方法。 子類 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;
}
}
現在我正在編寫一個排序 function 來制作 ArrayList(學生班)
public ArrayList <Student> sort(ArrayList<Student> sList){
sList.sort(Comparator.comparingInt(Student::getResult));
return sList;
}
輸入:
A 9
B 5
C 8
預期 Output:
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
如果您在子類中覆蓋了該方法,它將使用子類的實現,因此不必擔心顯式調用它,至少在您的情況下
getResult() 正在返回 double,嘗試返回 Int,我認為它會起作用。 編輯:或使用 compareDouble() 方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.