[英]Implementing abstract methods in a concrete class
我有我的大學項目的課程作業,我正在為抽象類的概念而苦苦掙扎。 我意識到擁有它們的原因,創建子類,我理解簡單的抽象類示例。 問題是要求實現一個具體的類 Selector,它實現了抽象方法。
創建一個抽象基類 ASelector,其中包含兩個名為 selectorRange 和 selectorValue 的抽象方法,如下所示:
selectorRange 方法需要兩個參數,這些參數定義了從 min 到 max(含)的可能值的整數范圍,具有以下簽名 public abstract void selectorRange( int min, int max );
selectorValue 方法返回一個隨機生成的值,范圍從 min 到 max(含),並具有以下簽名 public abstract int selectorValue();
創建一個具體的類 Selector,它使用適當的代碼實現 ASelector 以實現這兩種方法。
到目前為止,我有:
public class Selector extends ASelector {
@Override
public void selectorRange(int min, int max) {
min = 1;
max = 10;
}
@Override
public int selectorValue(int min, int max) {
Random r = new Random();
int randomNumber = r.nextInt(max - min) + min;
return randomNumber;
}
}
但是我得到的錯誤是方法標題中的 Selector 。 它說我還沒有實現抽象方法,但我有嗎? 或者我認為我有。 任何幫助,將不勝感激。
我的 ASelector 類:
public abstract class ASelector {
public abstract void selectorRange(int min, int max);
public abstract int selectorValue();
}
在您的類選擇器中,您應該存儲最大和最小數字
int max;
int min;
那么你的 selectorValue 代碼應該是這樣的:
public int selectorValue(){
Random r = new Random();
int randomNumber = r.nextInt(this.max - this.min) + min;
return randomNumber;
}
發生的事情是java允許方法重載,這意味着您可以創建具有相同名稱和不同輸入屬性的方法,它們會有所不同。 這意味着public int selectorValue()
與public int selectorValue(int min, int max)
,因此未實現該方法。
作為在 Selector 中存儲 max 和 min 的結果,您的 selectorRange 應該是這樣的:
public void selectorRange(int min, int max) {
this.min = min;
this.max = max;
}
這會將您的內部 min 和 max 變量設置為參數 min 和 max 的值
問題是ASelector
定義了
public abstract int selectorValue();
但是你執行
public abstract int selectorValue(int min, int max);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.