簡體   English   中英

在具體類中實現抽象方法

[英]Implementing abstract methods in a concrete class

我有我的大學項目的課程作業,我正在為抽象類的概念而苦苦掙扎。 我意識到擁有它們的原因,創建子類,我理解簡單的抽象類示例。 問題是要求實現一個具體的類 Selector,它實現了抽象方法。

創建一個抽象基類 ASelector,其中包含兩個名為 selectorRange 和 selectorValue 的抽象方法,如下所示:

  1. selectorRange 方法需要兩個參數,這些參數定義了從 min 到 max(含)的可能值的整數范圍,具有以下簽名 public abstract void selectorRange( int min, int max );

  2. 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.

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