目次> 第4章> 4.4 TOPUPPREVNEXT

4.4 カウントボタン(補足)

4.3で解説しているプログラム CountButton2.java のスタイルは、少し古い書き方です。

理由は以下のとおりです。

たしかに、ローカル変数はフレームを作成し終わると消えてしまい、 アクションリスナの中からは参照できませんが、 だからといっていきなり「クラス変数」を使用する必要はなく、 「インスタンス変数」で充分です。

変数の種類によって、参照できる(時間的な)範囲が変わります。以下のとおりです。

種類 いつ参照できるか 宣言の方法 参照の方法
ローカル変数 宣言した後、メソッドを実行している時だけ参照可能 メソッドの中で宣言 変数の名前のみを記述
インスタンス変数 インスタンスを生成後、
または、コンストラクタ内(インスタンス生成中)
メソッドの外
static をつけない
インスタンス名.変数名
コンストラクタ内では 変数名のみを記述
クラス変数 いつでも メソッドの外
static をつける
クラス名.変数名
クラス内では 変数名のみを記述
上記のように、順に参照できる範囲が順に広がりますが、プログラムでは「参照できる範囲を狭くする」 ということが大切です。
インスタンス変数はインスタンスごとに別の値を保持することが可能であり、 クラス変数は、クラスに共通な値を保持します。 クラス変数は、「クラスに共通の値を、異なるインスタンスで参照する」ためだけに使用すべきです。

インスタンス変数は、インスタンスの生成中(コンストラクタの中)か、インスタンス生成後でしか参照できませんから、 1.2 節のスタイルでなければ利用できません。

次のプログラムは、コンストラクタを記述し、クラス変数をインスタンス変数に変更したものです。

ソースプログラム CountButton4.java

CountButton2.java からの 変更点

メソッド main の本体をコンストラクタとして抜き出しています。行番号の赤字部分が変更した行。

更新日:2008/05/03 TOPUPPREVNEXT