簡體   English   中英

如何使用繼承和構造函數使用具有2個不同大小的1個數組

[英]How can I use 1 array with 2 different sizes using inheritance and constructors

我需要使用單個數組來跟蹤游戲的得分,其中索引是游戲的級別。 在父類中,允許玩家10個級別。 在兒童班中,他們獲得了40個額外的等級,總計達到50個等級。

本章是關於繼承的,它們還涵蓋了構造函數。 父類和子類中的構造函數都可以更改單個數組的大小嗎?

我嘗試過聲明數組的大小為50,然后在每個構造函數中為我需要的大小分配內存。 父類和子類分別為[10]和[50]。

在Java中,數組是不可擴展的,因此不能僅僅“使用1個具有2種不同大小的數組”。 您可能要使用ArrayList

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

還有一個問題要問:確定要為此任務繼承嗎? 您可以簡單地創建所需大小的數組:

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

但這不是必需的。 如果沒有足夠的空間,該列表將根據需要增加,因此您不必擔心。

是的,在構造函數中,您應該只能像array = new int[#]那樣重新定義它

另外,也許不是您問題的確切答案,但是您可以使用列表而不是數組。 Java列表可調整大小。

因此,您可以將其定義為List<Integer>而不是int[] ,而不必擔心大小。

層次結構中的最低級別必須為子類提供定義數組大小的選項。

例如:

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];
    }
}

和子類:

package io.medev.stackoverflow;

public class Game2 extends Game1 {

    public Game2() {
        this(0);
    }

    protected Game2(int additionalLevels) {
        super(40 + additionalLevels);
    }
}

像已經提到的其他方法一樣,在這種情況下,我通常建議使用列表而不是數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM