在调用super之前在构造函数中转换变量?

时间:2014-11-12 08:33:35

标签: java constructor casting super

我正在创建一个游戏,我希望在屏幕上显示生命的数量。我不知道如何在屏幕上添加数字,但我知道GLabel类可以让你在屏幕上写一个String。所以我认为这是一个好主意:

public class Lives extends GLabel
{
    double xPoistion, yPosition;
    int lives;
    String s_lives;

    public Lives(int lives, double xPosition, double yPosition){
        super(lives, xPosition, yPosition);
        this.lives = lives;
    }
}

然而,GLabel类的构造函数仅适用于String,其中lives位于超级中。我似乎找不到解决方案来解决这个问题。它甚至可能吗?

我试过了:

super(lives.toString(s_lives), xPosition, yPosition);

结果是:

Lives.java:14: cannot reference s_lives before supertype constructor has been called
    super(lives.toString(s_lives), xPosition, yPosition);

2 个答案:

答案 0 :(得分:4)

您似乎正在使用班级成员s_lives(我假设s_lives是什么)而不是传递的lives参数,而您是试图在原语上调用toString()

看起来你需要的是:

public Lives(int lives, double xPosition, double yPosition)
{
    super(Integer.toString(lives), xPosition, yPosition);
    this.lives = lives;
}

答案 1 :(得分:2)

你只需要将int转换为字符串

public class Lives extends GLabel{
    double xPoistion, yPosition;
    int lives;

    public Lives(int lives, double xPosition, double yPosition){
        super(lives+"", xPosition, yPosition);// use '+' operation can easily convert the number
        this.lives = lives;
    }
}