[英]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.