Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非静态法_Java_Non Static - Fatal编程技术网

Java 非静态法

Java 非静态法,java,non-static,Java,Non Static,我这里有一个类,当按下一个键时,它可以在窗口中移动一把枪。但是,我从类型中引用非静态方法时出错。以下是两部分。错误出现在两个“if(k==…”行 哪个枪?您需要一个实例,即对枪对象的引用,从而创建: Gun gun = new Gun(...); gun.move(amount); 您的键盘对象必须以某种方式引用此枪对象,或者可能引用某个知道您正试图移动枪哪个枪的管理器类型对象?您需要一个实例,即引用由此创建的枪对象: Gun gun = new Gun(...); gun.move(amo

我这里有一个类,当按下一个键时,它可以在窗口中移动一把枪。但是,我从类型中引用非静态方法时出错。以下是两部分。错误出现在两个“if(k==…”行



哪个
?您需要一个实例,即对
对象的引用,从而创建:

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)
然后你必须使用field
G
。命名约定表明你应该使用小写的
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实例的方法(静态)上调用它。静态方法属于类,而不是主要与“所有实例的整体”关联。由于每个实例都与它的类关联,因此我们认为每个静态方法都可以被每个对象访问。