Java 非静态法
我这里有一个类,当按下一个键时,它可以在窗口中移动一把枪。但是,我从类型中引用非静态方法时出错。以下是两部分。错误出现在两个“if(k==…”行Java 非静态法,java,non-static,Java,Non Static,我这里有一个类,当按下一个键时,它可以在窗口中移动一把枪。但是,我从类型中引用非静态方法时出错。以下是两部分。错误出现在两个“if(k==…”行 哪个枪?您需要一个实例,即对枪对象的引用,从而创建: Gun gun = new Gun(...); gun.move(amount); 您的键盘对象必须以某种方式引用此枪对象,或者可能引用某个知道您正试图移动枪哪个枪的管理器类型对象?您需要一个实例,即引用由此创建的枪对象: Gun gun = new Gun(...); gun.move(amo
哪个
枪
?您需要一个实例,即对枪
对象的引用,从而创建:
Gun gun = new Gun(...);
gun.move(amount);
您的
键盘
对象必须以某种方式引用此枪
对象,或者可能引用某个知道您正试图移动枪
哪个枪
的管理器类型对象?您需要一个实例,即引用由此创建的枪
对象:
Gun gun = new Gun(...);
gun.move(amount);
您的
键盘
对象必须以某种方式引用此枪
对象,或者引用某个知道您正试图移动枪
的管理器类型的对象,您的移动方法是一个非静态方法,因此应该使用类枪的实例调用它
Gun gun = new Gun();//creating an instance of a Gun class.
if (k == 39) {gun.move(10);}
if (k == 37) {gun.move(-10);}
您的move方法是一个非静态方法,因此应该使用类Gun的实例调用它
Gun gun = new Gun();//creating an instance of a Gun class.
if (k == 39) {gun.move(10);}
if (k == 37) {gun.move(-10);}
静态方法不是特定于对象的给定实例的方法。它不会对使一支枪与另一支枪不同的任何东西(实例变量)进行操作。您的移动方法不是静态的。它移动某支枪 当您将其称为:
Gun.move(10)
您在所有枪上调用它,而不是在某个枪上调用它(因此静态方法会出错)。为了移动枪,您必须有一个要移动的枪。因此,您需要创建一个新枪(使用
新枪(…)
).静态方法不是特定于给定对象实例的方法。它不会对使一支枪与另一支枪不同的任何东西(实例变量)进行操作。移动方法不是静态的。它移动某支枪
当您将其称为:
Gun.move(10)
您在所有枪上调用它,而不是在某个枪上调用它(因此静态方法会出错)。为了移动枪,您必须有一个要移动的枪。因此,您需要创建一个新枪(使用
新枪(…)
).错误消息说明了一切:您正在尝试访问Gun
的实例方法,但没有Gun
实例。如果必须询问,我怀疑我们是否会告诉您是否有帮助。您需要阅读更多java教程。错误消息说明了一切:您正在尝试访问Gun
的实例方法,而没有Gun
实例。我如果你不得不问,我怀疑我们告诉你会有帮助。你需要阅读更多的java教程。事实上,我已经在持有键盘的课堂上做了这件事。'private Gun G;public Shooter(Color x){setBackground(x);G=new Gun(Color.blue);}'要调用类的特定实例的方法,需要使用该实例。因此,如果将Gun
保存到变量G
,则需要调用G.move(10)
然后你必须使用fieldG
。命名约定表明你应该使用小写的G
来代替。事实上,我之前在持有键盘的课堂上就已经这样做了。'private Gun G;public Shooter(Color x){setBackground(x);G=new Gun(Color.blue);}'要调用类的特定实例的方法,需要使用该实例。因此,如果将Gun
保存到变量G
中,则需要调用G.move(10)
,然后必须使用字段G
。命名约定指示应使用小写的G
。“您在所有guns上调用它”=>错误。他在一个独立于任何guns实例的方法(静态)上调用它。静态方法属于类,而不是主要与“所有实例的整体”关联。由于每个实例都与其类关联,因此我们认为每个静态方法都可以被每个对象访问。“您在所有guns上调用它。”“=>错了。他在一个独立于任何Gun实例的方法(静态)上调用它。静态方法属于类,而不是主要与“所有实例的整体”关联。由于每个实例都与它的类关联,因此我们认为每个静态方法都可以被每个对象访问。