在具体类中实现抽象方法

时间:2016-04-20 23:39:16

标签: java

我为我的大学项目做过课程,我正在努力学习抽象课程的概念。我意识到拥有它们的原因,创建子类,我理解简单的抽象类示例。问题是要求实现一个具体的类Selector,它实现了抽象方法。

  

使用两个名为selectorRange和selectorValue的抽象方法创建一个抽象基类ASelector,如下所示:

     
      
  1. selectorRange方法需要两个参数来定义从min到max(包括)的可能值的整数范围,并带有以下签名   public abstract void selectorRange(int min,int max);

  2.   
  3. selectorValue方法返回从min到max(包括)范围内的随机生成的值,并具有以下签名   public abstract int selectorValue();

  4.         

    创建一个具体的类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();
}

2 个答案:

答案 0 :(得分:1)

在班级选择器中,您应该存储最大和最小编号

     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)的格式不同,因此该方法未实现。

由于在选择器中存储max和min,你的selectorRange应该是这样的:

    public void selectorRange(int min, int max) {
        this.min = min;
        this.max = max;  
    }

这会将内部最小和最大变量设置为参数min和max

的值

答案 1 :(得分:0)

问题在于ASelector定义了

public abstract int selectorValue();

但是你实施了

public abstract int selectorValue(int min, int max);