0

我有一个程序,其中有两个形状 Player1 和 Player2,它们都由类 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关键字表示所讨论的变量属于“类本身”,而不是单个实例。换句话说,用一个实例改变它会改变所有实例。所以在这种情况下,你不应该做你所要求的。

于 2012-05-02T00:40:29.673 回答
1

不,

static作为Java中的关键字意味着该字段是Class字段而不是instance字段。这些应该用于在类的实例之间使用并且对给定实例没有任何意义的字段。在您的情况下,xPosandyPos是针对该类的每个实例的。

看看这个静态教程

于 2012-05-02T00:41:13.390 回答
1

简短的回答是否定的。

static变量或方法意味着不需要该对象的实例来使用它(例如,我们在创建类的新实例时不会创建SystemSystem.out.println。也意味着我们每次调用对象的状态都是一致的;也就是说,如果我们在具有静态字段的类中设置某个值,则该值将在该类的所有实例中保持一致。

对于Player对象的每个实例,每个 x 和 y 位置都是唯一的。你不想使用static.

于 2012-05-02T00:44:26.480 回答
0

当您希望其所有引用中的值相同时,您可以使用静态。在您的情况下,我猜您希望xPosandyPos对不同的玩家有所不同。换句话说,对于您为您想要的 Player 类创建的每个对象xPosyPos它们都是不同的。所以你不要将它们声明为静态的。

附加信息:如果您将某个变量声明为静态,则使用它的方法也应声明为静态。

于 2012-05-02T00:56:06.107 回答
0

不,在这种情况下不要使用静态属性,因为 xPos 和 yPos 是每个 Player 的属性(属性)。创建的每个玩家(实例)都必须有自己的 x 和 y。

static关键字用于创建属于类而不是类实例的东西。

例如,如果 xPos 是静态的,您可以调用 Player.xPos 来获取 xPos 的值,而无需类的实例,并且所有 Player 将具有相同的 xPos 和 yPos。

于 2012-05-02T01:45:28.203 回答