0

Player1 と Player2 の 2 つのシェイプがあり、両方ともクラス Player によって継承されているプログラムがあります。

Public class Player{

    public int xPos;
    public int yPos;

    // more code

}

player1 クラス:

Public class Player1 extends Player{

    public Player(){
        xPos = 200;
        yPos = 200;
    }
    // more code
}

Player2 クラス:

Public class Player2 extends Player{

    public Player2(){

        xPos = 400;
        yPos = 200;
    }
// more code
}

この場合、Player クラスの xPos と yPos に static を使用する必要がありますか?

4

7 に答える 7

3

いいえ。静的変数はクラスのメンバーです。位置変数をオブジェクトのメンバー (非静的) にする必要があります。

于 2012-05-02T00:39:23.337 に答える
3

xPos と yPos が静的である場合、Player のすべてのインスタンスは同じ位置になります。

于 2012-05-02T00:40:54.177 に答える
1

変数の前のstaticキーワードは、問題の変数が個々のインスタンスではなく「クラス自体」に属していることを示します。つまり、1 つのインスタンスで変更すると、すべてのインスタンスで変更されます。したがって、この場合、あなたが求めていることをするべきではありません。

于 2012-05-02T00:40:29.673 に答える
1

いいえ、

staticJava のキーワードとしては、フィールドがClassフィールドではなくフィールドであることを意味しinstanceます。これらは、クラスのインスタンス間で使用されるフィールドに使用されることになっており、特定のインスタンスには何の意味もありません。あなたの場合、xPosyPosはクラスの各インスタンス用です。

この静的チュートリアルを見てください

于 2012-05-02T00:41:13.390 に答える
1

短い答えはノーです。

変数またはメソッドは、このオブジェクトのstaticインスタンスを使用する必要がないことを意味します (たとえば、クラスの新しいインスタンスを作成するSystemときは作成しませんSystem.out.println)。また、オブジェクトを呼び出すたびに、オブジェクトの状態が一貫していることも意味します。つまり、静的フィールドを持つクラス内に値を設定すると、その値はそのクラスのすべてのインスタンスで一貫したままになります。

Playerすべての x および y 位置は、オブジェクトの各インスタンスに対して一意です。を使用したくありませstatic

于 2012-05-02T00:44:26.480 に答える
0

いいえ。xPos と yPos は各プレーヤーの属性 (プロパティ) であるため、この場合は静的属性を使用しないでください。作成される各プレーヤー (インスタンス) には、独自の x と y が必要です。

キーワードは、クラスのstaticインスタンスではなくクラスに属するものを作成するために使用されます。

たとえば、xPos が静的である場合、クラスのインスタンスを持たなくても、Player.xPos を呼び出して xPos の値を取得でき、すべてのプレーヤーが同じ xPos と yPos を持つことになります。

于 2012-05-02T01:45:28.203 に答える
0

すべての参照で値を同じにしたい場合は、 static を使用します。あなたの場合、 とをプレイヤーごとに異なるものにしたいxPosと思います。yPosつまり、クラス Player 用に作成したオブジェクトごとに、異なる必要がxPosありyPosます。したがって、それらを静的として宣言しません。

追加情報: 変数を static として宣言する場合、それを使用するメソッドも static として宣言する必要があります。

于 2012-05-02T00:56:06.107 に答える