【发布时间】:2016-08-13 21:59:06
【问题描述】:
我的大学项目有课程作业,但我正在为抽象类的概念而苦苦挣扎。我意识到拥有它们以创建子类的原因,并且我理解简单的抽象类示例。问题是要求实现一个具体的类,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();
}
【问题讨论】:
-
不影响你描述的问题,但是
min = 1; max = 10;只是覆盖了selectorRange中的参数值;这没有任何用处。 -
请出示你的
ASelector班级。 -
规范中的
public abstract int selectorValue( )与您的代码中的public int selectorValue(int min, int max) {不同。 -
ASelector 类如下: Public abstract class ASelector { public abstract void selectorRange(int min, int max);公共抽象整数选择器值(); }
-
您没有覆盖抽象方法 selectorValue();你实际上是在试图超载它。
标签: java