如何重写方法,使其仅返回数字2?(爪哇) import java.util.Random; 公共类骰子{ 双方的私人关系; private int[]sideValues=new int[getNumOfSides()]; 公共骰子(整数边){ 本节中,设置numOfSides(numOfSides); for(int i=0;i
如何重写Roll()方法,使其仅打印数字2?我无法理解覆盖如何重写方法,使其仅返回数字2?(爪哇) import java.util.Random; 公共类骰子{ 双方的私人关系; private int[]sideValues=new int[getNumOfSides()]; 公共骰子(整数边){ 本节中,设置numOfSides(numOfSides); for(int i=0;i,java,overriding,Java,Overriding,如何重写Roll()方法,使其仅打印数字2?我无法理解覆盖 编辑:谢谢你的回答。有人能解释一下为什么需要一个与父类和子类构造函数具有相同签名的构造函数吗?还是我弄错了?在您点名时对代码进行以下更改: import java.util.Random; public class Dice { private int numOfSides; private int[] sideValues = new int[getNumOfSides()]; public Dice(int numOfSide
编辑:谢谢你的回答。有人能解释一下为什么需要一个与父类和子类构造函数具有相同签名的构造函数吗?还是我弄错了?在您点名时对代码进行以下更改:
import java.util.Random;
public class Dice {
private int numOfSides;
private int[] sideValues = new int[getNumOfSides()];
public Dice(int numOfSides) {
this.setNumOfSides(numOfSides);
for(int i = 0; i < this.sideValues.length; i++) {
sideValues[i] = i + 1;
}
}
public int Roll() {
return (new Random()).nextInt(getNumOfSides()) + 1;
}
public int getNumOfSides() {
return numOfSides;
}
public void setNumOfSides(int numOfSides) {
this.numOfSides = numOfSides;
}
}
import java.util.Random;
public class CheatDice extends Dice {
public CheatDice(int numOfSides) {
super(numOfSides);
}
public int Roll() {
return 2;
}
}
public class DiceTester {
public static void main(String[] args) {
Dice a = new Dice(6);
System.out.println(a.Roll());
Dice b = new Dice(2120202);
System.out.println(b.Roll());
Dice d = new Dice(5);
System.out.println(d.Roll());
}
}
现在您将看到2被返回。您已经在作弊骰子类中覆盖
Roll()
以返回2
。我不明白你在问什么。@azurefrog在使用这些行时,它没有将数字2打印到控制台:骰子d=新骰子(5);System.out.println(d.Roll());您的问题是,虽然您已正确定义了CheatDice
,其中覆盖了Dice
中的Roll
方法,但尚未创建任何CheatDice
的实例。顺便说一句,在CheatDice
中,您应该在Roll()
的声明中添加@Override
注释,以便编译器可以在您的重写不正确时向您发出警告。此外,Java中的惯例是只对类型名(类、枚举)使用大写,对方法使用小写。@JimGarrison谢谢有人能解释一下为什么需要一个与父类和子类构造函数具有相同签名的构造函数吗?还是我错了?
Dice d = new CheatDice(5);