簡體   English   中英

如何從超類調用抽象方法(在子類中被覆蓋)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM