我创建了一个可以调用的类来存储我的类的x和y值。但是,当我调用超级构造函数时,值不会被传递。
这是我在主类中创建Player类的新实例的地方。
p = new Player(getWidth() / 2, getHeight() / 2, this);
这是我正在为我的超级构造函数调用的类
public class GameObject {
public int x;
public int y;
public GameObject(int x, int y){
this.x = x;
this.y = y;
}
}
这是我的类调用超级构造函数
public class Player extends GameObject implements EntityA{
private int x = 0;
private int y = 0;
Game game;
BufferedImage spriteSheet;
Rectangle bounds;
public Player(int x, int y, Game game){
super(x, y);
this.game = game;
bounds = new Rectangle(x, y, Game.spriteSize, Game.spriteSize);
spriteSheet = game.getSpriteSheet();
System.out.println("x: " + this.x + " this.y: " + y);
}
x和y都具有零值。我可以看到我没有正确使用超级构造函数的调用。有人能告诉我如何做到这一点。谢谢。
答案 0 :(得分:0)
问题不在于构造函数,而在于这些类的字段。您在public int x
中定义了y
和GameObject
,在private int x
中定义了y
和Player
。
GameObject.x
隐藏Player.x
。但是,GameObject
的构造函数仍将GameObject.x
设置为给定值。如果您然后尝试查询Player.x
是什么,那么它仍为零。
答案 1 :(得分:0)
在Player
构造函数中,此行
System.out.println("x: " + this.x + " this.y: " + y);
正在使用Player
和x
的 y
版本,这些版本被您的代码忽略,因此具有int的默认初始值,这是零。我想你想要消除这个
private int x = 0;
private int y = 0;
来自您的Player
课程,这会导致您的代码访问GameObject
版x
和y
,这是您的目标。