
静的フィールド
Javaでは、クラスをnewした場合は、基本的に別々のインスタンスとなり、別々の値を持つことになります。
ただ、開発していると「各インスタンスで共有したい情報」も出てくると思います。
その場合は、下記のようにフィールドの先頭に「static」をつけます。
1 2 3 4 5 6 7 |
public class People { String name; //名前 int weight; //体重 ★static String pc;//パソコン } |
静的(static)フィールド(クラス変数)の特徴
フィールドがインスタンスごとではなく、クラスごとに用意される。
staticをつけない場合は、各インスタンスごとに変数が用意されましたが、staticを付けるとクラスごとに用意されます。
なので、クラスを「new」しなくても「クラス名.静的フィールド名」でアクセスができます。
なので、「静的フィールド」は、「クラス変数」と呼ばれます。
public static final
なので、クラス全体の固定値は「public static final」と宣言します。(finalは、変化しないという意味)
staticフィールドの初期化
staticフィールドは、コンストラクタでの初期化はできません。
変わりに、下記のように「staticイニシャライザ」というものを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class People { static String pc;//パソコン //staticイニシャライザによるstatic初期化子の初期化 static { pc = "Share-PC1"; } static void pcUse() { System.out.println("PC「" + pc + "」を使います。"); } } |
静的メソッド
メソッドにも、「static」を付けることで、「クラス名.メソッド名();」でnewせずにそのまま呼び出せるようになります。
1 2 3 4 5 6 7 8 9 10 11 |
public class People { String name; //名前 int weight; //体重 static String pc = "Share-PC";//パソコン static void pcUse() { System.out.println("PC「" + pc + "」を使います。"); } } |
また、上記のように、staticメソッドの中では、staticフィールド(クラス変数)しか呼び出せないので注意です。
この記事へのコメントはありません。