クラス変数
クラス変数とは?
別名、静的フィールド。
インスタンス変数に修飾子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
アクセスの仕方は以下の通り。
クラス名.クラス変数;