![](/img/trans.png)
[英]How to add 2 different animals into a text file using inheritance, if they have different constructors?
[英]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.