'Static'关键字有什么作用?

时间:2012-05-02 00:37:56

标签: java static

我有一个程序,其中有两个形状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吗?

7 个答案:

答案 0 :(得分:3)

没有。静态变量是类的成员,您希望您的位置变量是对象的成员(非静态)。

答案 1 :(得分:3)

如果xPos和yPos是静态的,则Player的每个实例都具有相同的位置。

答案 2 :(得分:1)

变量前面的static关键字表示相关变量属于“类本身”而不是单个实例。换句话说,用一个实例更改它会改变所有这些实例。所以在这种情况下,你不应该按照你的要求去做。

答案 3 :(得分:1)

不,

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

看看这个static tutorial

答案 4 :(得分:1)

简短的回答是

static变量或方法意味着不需要此对象的实例来使用它(例如,当我们执行{{}时,我们不会创建类System的新实例。 1}})。它还意味着每次调用它时对象的状态都是一致的;也就是说,如果我们在一个带有静态字段的类中设置一些值,那么该值将在该类的所有实例中保持一致。

每个x和y位置对于System.out.println对象的每个实例都是唯一的。您不希望使用Player

答案 5 :(得分:0)

如果希望所有引用中的值相同,则使用static。在你的情况下,我猜你希望xPosyPos对于不同的玩家来说是不同的。换句话说,您为类播放器创建的每个对象都希望xPosyPos不同。所以你不要将它们声明为静态。

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

答案 6 :(得分:0)

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

static关键字用于创建属于类的内容,而不是类的实例。

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