Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重写方法,使其仅返回数字2?(爪哇) import java.util.Random; 公共类骰子{ 双方的私人关系; private int[]sideValues=new int[getNumOfSides()]; 公共骰子(整数边){ 本节中,设置numOfSides(numOfSides); for(int i=0;i_Java_Overriding - Fatal编程技术网

如何重写方法,使其仅返回数字2?(爪哇) import java.util.Random; 公共类骰子{ 双方的私人关系; private int[]sideValues=new int[getNumOfSides()]; 公共骰子(整数边){ 本节中,设置numOfSides(numOfSides); for(int i=0;i

如何重写方法,使其仅返回数字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

如何重写Roll()方法,使其仅打印数字2?我无法理解覆盖


编辑:谢谢你的回答。有人能解释一下为什么需要一个与父类和子类构造函数具有相同签名的构造函数吗?还是我弄错了?

在您点名时对代码进行以下更改:

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);