簡體   English   中英

“靜態”關鍵字有什么作用?

[英]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字段。 這些應該用於在類的實例之間使用的字段,並且對於給定的實例沒有任何意義。 在您的情況下, xPosyPos用於該類的每個實例。

看看這個靜態教程

簡短的答案是否定的

static變量或方法意味着不需要使用此對象的實例(例如,在執行System.out.println時,我們不會創建System類的新實例)。 這也意味着每次我們調用它時,對象的狀態都是一致的。 也就是說,如果我們在帶有靜態字段的類中設置某個值,則該值將在該類的所有實例中保持一致。

相對於Player對象的每個實例,每個x和y位置都是唯一的。 不想使用static

如果希望所有引用中的值都相同,請使用static。 在您的情況下,我想您希望xPosyPos對於不同的玩家來說是不同的。 換句話說,對於您為類Player創建的每個對象,希望xPosyPos不同。 因此,您不要將它們聲明為靜態的。

其他信息:如果您將某個變量聲明為靜態,則使用該變量的方法也應聲明為靜態。

不可以。在這種情況下,請不要使用靜態屬性,因為xPos和yPos是每個Player的屬性(屬性)。 每個創建的玩家(實例)必須具有自己的x和y。

static關鍵字用於創建屬於該類而不屬於該類實例的內容。

例如,如果xPos是靜態的,則可以調用Player.xPos來獲取xPos的值,而無需具有該類的實例,並且所有Player都將具有相同的xPos和yPos。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM