我有一个程序,其中有两个形状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吗?
答案 0 :(得分:3)
没有。静态变量是类的成员,您希望您的位置变量是对象的成员(非静态)。
答案 1 :(得分:3)
如果xPos和yPos是静态的,则Player的每个实例都具有相同的位置。
答案 2 :(得分:1)
变量前面的static
关键字表示相关变量属于“类本身”而不是单个实例。换句话说,用一个实例更改它会改变所有这些实例。所以在这种情况下,你不应该按照你的要求去做。
答案 3 :(得分:1)
不,
static
作为Java中的关键字表示该字段是Class
字段而不是instance
字段。这些应该用于在类的实例之间使用的字段,并且对于给定的实例没有任何意义。在您的情况下,xPos
和yPos
适用于该类的每个实例。
看看这个static tutorial
答案 4 :(得分:1)
简短的回答是否。
static
变量或方法意味着不需要此对象的实例来使用它(例如,当我们执行{{}时,我们不会创建类System
的新实例。 1}})。它还意味着每次调用它时对象的状态都是一致的;也就是说,如果我们在一个带有静态字段的类中设置一些值,那么该值将在该类的所有实例中保持一致。
每个x和y位置对于System.out.println
对象的每个实例都是唯一的。您不希望使用Player
。
答案 5 :(得分:0)
如果希望所有引用中的值相同,则使用static。在你的情况下,我猜你希望xPos
和yPos
对于不同的玩家来说是不同的。换句话说,您为类播放器创建的每个对象都希望xPos
和yPos
不同。所以你不要将它们声明为静态。
附加信息:如果将某个变量声明为静态,则使用它的方法也应声明为静态。
答案 6 :(得分:0)
没有。在这种情况下不要使用静态属性,因为xPos和yPos是每个Player的属性(属性)。创建的每个Player(实例)必须有自己的x和y。
static
关键字用于创建属于类的内容,而不是类的实例。
例如,如果xPos是静态的,您可以调用Player.xPos来获取xPos的值,而不需要拥有该类的实例,并且所有玩家将拥有相同的xPos和yPos。