目次> 第10章> 10.3 TOPUPPREVNEXT

10.3 クラスとインスタンス、クラス変数とインスタンス変数

クラスとインスタンスの関係は、設計図と、その設計図にしたがって 造られる物にたとえられます。

設計図に保持すべきデータと、個々の物について保持すべきデータが あります。
たとえば、車を例にとってみましょう。
エンジンの形式やボディの形状は設計図に書き、車体の色やナンバー、 持ち主の名前を個々の車ごとに記録するのがよい場合があります。
あるいは、車体の色も設計図に書き、ナンバーや所有者の名前のみを 個々に記録するほうが都合のよい場合もあります。

銀行の口座をクラスとすると、たとえば山田太郎さんの口座がインスタンスになります。

口座に氏名や残高を保持するフィールドを用意します。
口座のインスタンスを1つ生成し、氏名フィールドに「山田太郎」と代入します。

具体的なプログラム例をあげましょう。

5.1節で提示したプログラムでは、 コマンドラインから与えた2つの数の、和、差、積、商をならべて ひとつのウィンドウに表示しましたが、それぞれ別のウィンドウに 表示してみます。実用的な意味はありませんが、 クラス変数とインスタンス変数の使いわけの例です。

プログラム comp2m.java

ウィンドウの数をカウントする numwin がクラス変数です。 和、差、積、商を保存する value がインスタンス変数です。

numwin はクラスにひとつしかなく、 いつも同じ場所の数値を増減させるのに対し、 value は、インスタンスごとに生成され、おのおの別の値を 保持しています。

メインメソッドの中の、 arg1 と arg2 がローカル変数の例です。

実行結果



画面の左上に、3個ないし4個のウィンドウが重なって表示されますので、 1つづつはがしてみてください。メソッド disp の最後の方に、


    Point p = fr.getLocation();                  /* ウィンドウの表示位置 */
    fr.setLocation(p.x+20*numwin, p.y+20*numwin);/* 少し右下へ移動する */
という2行をがありますが、コンポーネントから継承しているメソッド getLocation と setLocation をもちいて、ウィンドウの表示位置を、20ドットづつ右下へ 移動しています。
4つのウィンドウを全部クローズすると、プログラムの実行が終了し、DOS画面の プロンプトが戻ります。

あまり面白くない? では、講義と関係ないのですが、こんなのはいかかですか?

プログラム comp2mc.java

実行結果


更新日:2004/04/18 TOPUPPREVNEXT