簡體   English   中英

為什么此類的每個對象對其成員都具有相同的值?

[英]Why does every object of this class have the same value for its members?

我正在編寫一個應用程序,該應用程序應該非常簡單,但它始終使用nameboxesSold的最后設置值來進行所有操作。 這是一個最小的示例:

public class BandBoosterDriver
{
  public static void main (String[] args)
  {
    BandBooster booster1 = new BandBooster("First");
    BandBooster booster2 = new BandBooster("Second");
    booster2.updateSales(2);

    System.out.println(booster1.toString());
    System.out.println(booster2.toString());
  }
}

這是問題類別:

public class BandBooster
{
  private static String name;
  private static int boxesSold;

  public BandBooster(String booster)
  {
    name = booster;
    boxesSold = 0;
  }

  public static String getName()
  {
    return name;
  }

  public static void updateSales(int numBoxesSold)
  {
    boxesSold = boxesSold + numBoxesSold;
  }

  public String toString()
  {
    return (name + ":" + " " + boxesSold + " boxes");
  }
}

這產生

Second: 2 boxes
Second: 2 boxes

但是我希望

First: 0 boxes
Second: 2 boxes

如何使它按我期望的方式工作?

刪除static關鍵字。 static將指示您的程序對該字段使用單個內存地址,並且避免每次創建BandBooster實例時都為此字段分配專用內存。

因為它沒有任何實例成員,所以只有靜態成員。

靜態創建的變量對於該類是唯一的,並且由其所有實例共享。 您所看到的是應該發生的事情。

暫無
暫無

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

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