クラスとオブジェクト
ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin Expander等)を使って解凍して下さい。
フィールドとは?
グローバル変数とは、クラス全体で使える変数として宣言された変数でした。
データの表示では「age」「name」「length」と言う3つのデータを「PrintValueGui2」と言うクラスのグローバル変数として宣言しました。
此は3つの変数を「PrintValueGui2」と言うクラスで1パックにしたと言えます。
int型やdouble型と言った「型」は、其れをメモリに割り当てる事で、たった1個のデータを記録出来ます。
此に名前を付けた物が変数でした。
此に対し「クラス」は、幾つかのデータのまとまりをパックにした「超デカイ型」と考えられます。
此のパックされたデータを1セット記憶する為には、当然1セット分のメモリ領域を割り当てる必要が有ります。
此に名前を付けた物をオブジェクトと言います。
第1章で使った色を使う「Colorクラス」やフォントを扱う「Fontクラス」についても其の時必要な色情報やフォント情報を記憶する為には、其れに見合ったメモリ領域の確保が必要で有り、変数の宣言と同様にオブジェクト名を宣言出来ます。
グローバル変数は、オブジェクトの中にパックされた1つ1つのデータを識別する為の名前です。
此等をまとめてフィールドと言います。
型 |
int型 |
等を記憶する物 |
変数
|
double型 |
char型 |
クラス |
Colorクラス |
等を記憶する物 |
オブジェクト
|
Fontクラス | しかしオブジェクトが変数と異なる点は、変数は宣言されると同時にメモリ領域が確保されますが、オブジェクトは名前が登録されるだけで、実際には必要な領域は確保されません。 其の為、インスタンス化と呼ばれるメモリ領域を確保する初期化作業が必要になります。
オブジェクトを使う オブジェクト名の宣言 オブジェクト名の宣言は、変数名の宣言と同じ形式です。 型名の代わりにクラス名を、変数名の代わりにオブジェクト名を書きます。 オブジェクト名は変数名と同様に通常は小文字を使います。
例: |
Color c; //Colorクラスのオブジェクト名「C」を宣言 Font f; //Fontクラスのオブジェクト名「f」を宣言 | オブジェクトのインスタンス化 オブジェクトは宣言しただけでは、クラスの情報を記憶するメモリ領域が確保出来ません。 宣言したオブジェクトに対し、メモリ領域の確保と初期化を行うインスタンス化と言う作業をします。
オブジェクト名 = new クラス名(初期化に必要なデータ); | 「初期化に必要なデータ」は、個々のクラスによって異なります。 又、此のデータの書き方が1つのクラスに何種類も有る場合が有ります。
例: |
c = new Color(0, 0, 192); 「赤:0 緑:0 青:255」の割合で混ぜた色で初期化
f = new Font("MS 明朝", Font.BOLD,
30); 「フォント名:"MS 明朝" スタイル:太字 サイズ:30」のフォントで初期化 | 文字列を扱うStringクラス char型が記憶出来るのは、半角、全角を問わずたったの1文字でした。 しかし文字は、幾つも集まってこそ意味の有る単語や文章になる為、沢山の文字を文字列と言い、文字列を扱うのがStringクラスです。 文字は「'」で囲んで表しましたが、文字列は「"」で囲んで表します。 画面に表示する文字は、
g.drawString("私のハンドル・ネームは溝ノ口です", 20, 60); | の様に「"」で囲みましたが、実は此は文字列だったのです。 又、フォント名も「"MS 明朝"」のように「"」で囲んでありますが、此も文字列です。 此等にオブジェクト名は付いていませんが、データを記憶する為には、オブジェクトのメモリ領域は必ず必要で、其の為名前の無いオブジェクトが其処には存在しているのです。
Stringクラスのオブジェクトの初期化には、2つの方法が有ります。
1つはインスタンス化による初期化で、もう1つは代入による初期化です。
例: |
インスタンス化による初期化 |
String s = new String("私のハンドル・ネームは溝ノ口です"); 新しく領域が確保され、文字列データは新しい領域にコピー |
代入による初期化 |
String s = "私のハンドル・ネームは溝ノ口です"; オブジェクト名「s」は、名前無しのオブジェクトの領域を指す | オブジェクトの初期化 オブジェクト名は、宣言と同時に初期化出来ます。 又、新たにメモリ領域を確保するインスタンス化も出来ます。
オブジェクトは第4章でしっかり学びますが、此処では「こんな物かな?」と言うイメージだけつかんでおきましょう。
例: |
Color color1 = Color.green; //緑で初期化 |
Color color2 = new Color(0, 180, 255); //インスタンス化 | 戻る |