カテゴリー
Java

staticについて知ろう

この章ではstaticについて説明します。
staticが指定してあるフィールド変数を静的フィールドと言います。
次の例では以下のlastIDが静的フィールドです。1 静的フィールドの特徴は今までのフィールド変数はオブジェクトを作成してから使ってきましたが、静的フィールドはオブジェクトを作成しなくても使うことが出来ます。
つまり、静的フィールドはオブジェクトではなくてクラスに属していると言えます。
では例をみてみましょう。
次の例は「Main88.java」です。11 次の例は「Member22.java」です。111111111 結果は以下の通りです。1 Main88クラスでは3つのオブジェクトを作成していますが、上記の会員番号が更新されていることに気付くと思います。
試しに1の中のstaticを外してみますと次の結果のようにカウントがされません。1 つまり、staticを付けないフィールド変数はオブジェクトに属しているので3個オブジェクトを作成してもその都度その変数の値は上書きされてしまうわけです。
逆にstaticを付けたフィールド変数はクラスに属しているので上書きされずにカウントアップされたわけです。
つまり、オブジェクトに依存していない変数と言えます。
ではカウントアップするメソッドについて説明します。
仕組みはコンストラクタが呼び出されるごとに以下のmakeMemberIDメソッドが呼び出され、静的フィールドのlastIDをカウントアップするという手法です。1 以下の箇所で静的フィールドをカウントアップしています。1 結果を出力するのは以下の箇所です。1 「クラスについて知ろう」で説明した通りmember1, member2, member3の後ろにはtoStringメソッドが省略されています。1 次に静的フィールドを直接出力する方法について説明します。
静的フィールドはクラスに属していると言いましたが、この静的フィールドに直接アクセスするには1と、記述します。
では説明をするのに先ほどの例を変更して使いますのでMember22.javaの1 の箇所を1に変更します。
そして、Main88.javaの中に次の赤枠の記述を追加します。1 上の赤枠の箇所を出力すると以下の通り「合計人数は3」になります。11 mainメソッドは1つもオブジェクトが存在しない状態で呼び出されているので、staticが付いています。
つまり、静的メソッドはクラスに属するメソッドなので、オブジェクトに依存していません。