クラス変数

クラス変数とは?

別名、静的フィールド。
インスタンス変数に修飾子staticを付けた変数のこと。
インスタンス毎に保持されるデータではなく、全インスタンスを共有して保持されるデータ。


言葉の説明は難しい。

なぜ、クラス変数が必要なのか

インスタンスを作成していくときに、1,2,3...のような識別番号を付けたいから。

どんな感じなのか

Count.java

  1 public class Count {
  2 
  3   private static int counter = 100;
  4   private int id;
  5     
  6   public Count() {
  7     id = ++counter; 
  8   } 
  9 
 10   public int getId() {
 11     return id;
 12   }
 13 
 14 }


CountTest.java

  1 public class CountTest {
  2 
  3   public static void main(String[] args) {
  4     Count ct = new Count();
  5     System.out.println(ct.getId());
  6 
  7     Count ct2 = new Count();
  8     System.out.println(ct2.getId());
  9 
 10     Count ct3 = new Count();
 11     System.out.println(ct3.getId());
 12   }
 13 
 14 }

実行結果

$ javac Count.java
$ javac CountTest.java
$ java CountTest
101
102
103


クラス変数counterは修飾子private付きで宣言されている。

private static int counter = 100;

したがって、外部クラスからアクセスできない。

Count.counter; //エラー


でも、privateを付けずに宣言すれば、もちろんアクセスできる。

static int counter = 100;
Count.counter; //OK

アクセスの仕方は以下の通り。

クラス名.クラス変数;