[英]What does the 'Static' keyword do?
我有一个程序,其中有两个形状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吗?
不能。静态变量是类的成员,您希望位置变量成为对象的成员(非静态)。
如果xPos和yPos是静态的,则Player的每个实例将具有相同的位置。
变量前面的static
关键字表示该变量属于“类本身”,而不是单个实例。 换句话说,一个实例更改它会同时更改所有实例。 因此,在这种情况下,您不应该执行自己的要求。
没有,
static
作为Java中的关键字表示该字段是Class
字段而不是instance
字段。 这些应该用于在类的实例之间使用的字段,并且对于给定的实例没有任何意义。 在您的情况下, xPos
和yPos
用于该类的每个实例。
看看这个静态教程
简短的答案是否定的 。
static
变量或方法意味着不需要使用此对象的实例(例如,在执行System.out.println
时,我们不会创建System
类的新实例)。 这也意味着每次我们调用它时,对象的状态都是一致的。 也就是说,如果我们在带有静态字段的类中设置某个值,则该值将在该类的所有实例中保持一致。
相对于Player
对象的每个实例,每个x和y位置都是唯一的。 您不想使用static
。
如果希望所有引用中的值都相同,请使用static。 在您的情况下,我想您希望xPos
和yPos
对于不同的玩家来说是不同的。 换句话说,对于您为类Player创建的每个对象,希望xPos
和yPos
不同。 因此,您不要将它们声明为静态的。
其他信息:如果您将某个变量声明为静态,则使用该变量的方法也应声明为静态。
不可以。在这种情况下,请不要使用静态属性,因为xPos和yPos是每个Player的属性(属性)。 每个创建的玩家(实例)必须具有自己的x和y。
static
关键字用于创建属于该类而不属于该类实例的内容。
例如,如果xPos是静态的,则可以调用Player.xPos来获取xPos的值,而无需具有该类的实例,并且所有Player都将具有相同的xPos和yPos。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.