如何使用继承和构造函数使用具有2个不同大小的1个数组

时间:2019-03-22 21:14:10

标签: java arrays inheritance constructor

我需要使用单个数组来跟踪游戏的得分,其中索引是游戏的级别。在父类中,允许玩家10个级别。在儿童班中,他们获得了40个额外的等级,总计达到50个等级。

本章是关于继承的,它们还介绍了构造函数。父类和子类中的构造函数都可以更改单个数组的大小吗?

我尝试声明数组的大小为50,然后在每个构造函数中为我需要的大小分配内存。父类和子类分别为[10]和[50]。

3 个答案:

答案 0 :(得分:0)

在Java中,数组是不可扩展的,因此不能仅仅“使用1个具有2种不同大小的数组”。您可能要使用ArrayList

List<Integer> list = new ArrayList<>();

还有一个问题要问:您确定需要继承此任务吗?您可以简单地创建所需大小的数组:

List<Integer> list = new ArrayList<>(40);

但是,那不是必须的。如果没有足够的空间,该列表将根据需要增长,因此您不必担心。

答案 1 :(得分:0)

是的,在构造函数中,您应该只能像array = new int[#]

那样重新定义它

此外,也许不是您问题的确切答案,但是您可以使用List而不是数组。 Java列表可调整大小。

因此,您可以将其定义为int[]而不是List<Integer>,而不必担心大小。

答案 2 :(得分:0)

层次结构中的最低级别必须为子类提供定义数组大小的选项。

例如:

  List No: 1 (b'Armadale (WA)', 6112, 8.)
  List No: 2 (b'Armidale (NSW)', 2350, 8.5)
  List No: 3 (b'Newport', 3015, 6.5)
  List No: 4 (b'Townsville Jobseekers', 4814, 7.5)
  List No: 5 (b'Albany', 6330, 6.5)
  List No: 6 (b'Atherton', 4883, 6.5)
  List No: 7 (b'Alice Springs', 870, 8.5)
  List No: 8 (b'Ayr', 4807, 6.5)
  List No: 9 (b'Ararat', 3377, 7.5)
  List No: 10 (b'Airport West', 3042, 6.5)

以及子类:

package io.medev.stackoverflow;

public class Game1 {

    private final int[] levels;

    public Game1() {
        this(0);
    }

    protected Game1(int additionalLevels) {
        this.levels = new int[10 + additionalLevels];
    }
}

就像已经提到的其他人一样,在这种情况下,我通常建议使用列表而不是数组。