我在无参数构造函数SandBox sb
中创建了AsteroidGame()
,但是当我尝试向sb
添加对象时,在我的generate方法中找不到变量SandBox
。我对哪里出错了?
public static void main(String[] args)
{
new AsteroidGame();
}
public AsteroidGame()
{
//Create SandBox
SandBox sb = new SandBox();
sb.init(this);
}
public void generate()
{
//Instantiate Rocket and add it to Sandbox
Dimension dime = sb.getPanelBounds();
Rocket rock = new Rocket(dime.width/2, dime.height/2);
sb.addBlob(rock);
}
答案 0 :(得分:2)
您的Sanbox
变量是局部变量意味着它在构造函数外部不可见。如果您想在generate
函数中使用它,则必须将其转换为您班级的field
答案 1 :(得分:2)
你可以这样做Declare SandBox as instance/class variable
:
SandBox sb; // Declare SandBox as instance/class variable
public static void main(String[] args)
{
new AsteroidGame();
}
public AsteroidGame()
{
//Create SandBox
sb = new SandBox();
sb.init(this);
}
public void generate()
{
//Instantiate Rocket and add it to Sandbox
Dimension dime = sb.getPanelBounds();
Rocket rock = new Rocket(dime.width/2, dime.height/2);
sb.addBlob(rock);
}
或Create a new local variable in
generate()method:
public static void main(String[] args)
{
new AsteroidGame();
}
public AsteroidGame()
{
//Create SandBox
SandBox sb = new SandBox();
sb.init(this);
}
public void generate()
{
// Create a new local variable here
SandBox sb = new SandBox();
Dimension dime = sb.getPanelBounds();
Rocket rock = new Rocket(dime.width/2, dime.height/2);
sb.addBlob(rock);
}
答案 2 :(得分:0)
构造函数是初始化不属于任何类的同一个类的对象。
java中的构造函数是一种特殊类型的方法,用于初始化对象。
在sb
方法本身中创建generate
。
如果sb
是字段成员,请使用sb = new SandBox();
代替SandBox sb = new SandBox();