我对父类的初始化感到困惑。我需要简要解释一下它是如何工作的。
public class Bullet extends NextUnit {
public static int numBullets;
public Bullet() {
super();
}
public Bullet(GameMain gameMain, AnimInfo animInfo, double x,double y, double xOnMap, double yOnMap,
double degree, double speed, double speedBackward, double speedRotate, int state) {
super(gameMain, animInfo, x, y, xOnMap, yOnMap, degree, speed, speedBackward, speedRotate, state);
}
// other parts of code are omitted
}
我在哪里初始化numBullets?
答案 0 :(得分:1)
您是否打算将其声明为静态?所有实例都将共享一个静态变量。您可以简单地将其值设置为内联(如果它是常量)或在其他位置设置一个赋值。
如果不打算在“bullet”的所有实例之间共享,则删除static
并将其设置为每个构造函数中的默认值(超级之前或之后)。如果您需要其他参数,只需添加它们。
您是否打算计算已实例化的Bullet
的数量?然后你只需要做一些事情,比如将它初始化为0并在两个构造函数中递增1。
答案 1 :(得分:1)
我在哪里初始化numBullets?
首先,您应该了解该变量已经使用默认值(0
的{{1}})进行了初始化。您可以使用以下方法初始化变量:
int
static { numBullets = 1; }
public static int increaseAndGet() { return ++numBullets; }
变量public static int numBullets = 1;
不是实例成员,它是类变量。 numBullets
与父类无关,它只是numBullets
类的一部分。您应该使用Bullet
成员与之互动。
在您的情况下,我建议编写下一个代码段:
static
答案 2 :(得分:0)
首先,您不需要为 numBullets 指定默认值,默认情况下为零。如果您希望它具有其他值,您可以使用内联赋值来执行此操作:
public static int numBullets = 43;
或使用这样的静态块:
public static int numBullets;
static {
numBullets = 44;
}