我为我的大学项目做过课程,我正在努力学习抽象课程的概念。我意识到拥有它们的原因,创建子类,我理解简单的抽象类示例。问题是要求实现一个具体的类Selector,它实现了抽象方法。
使用两个名为selectorRange和selectorValue的抽象方法创建一个抽象基类ASelector,如下所示:
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();
}
答案 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);