
Since 2003.04.15
前回の後のほうのプログラムを見てください。完成形に比べると行が多くなっています。
できるだけ、1行に複数の意味を持たせないようにした為です。
9行目までは、今までのものと変化ありません。ここでは
11 public class Sunflag extends Applet { から
32 } まで
に注目してください。
空行も含めてのこの22行が、Sunflag クラスの定義になっています。
この中にあるのは、次の2種類です。
| - | 構文 | 名前 |
Dimension dim; |
[修飾子][型][名前];ここでの[修飾子]は「修飾なし」 |
フィールド |
public void paint(Graphics g) { ...}
|
[修飾子][戻り値型][名前](引数) { 実行コード } | メソッド |
「フィールド」は、クラスのデータ構造を収容する入れ物の定義です。
「メソッド」は、クラスの振る舞いを記述します。
但し、これらはあくまで、定義であり、記述です。
クラスは、クラスの外部から働きかけを受けて(アプレットの場合であればWebブラウザから、多くの場合は他のクラスから)、実体化し動作を開始します。フィールドにデータを入れ、メソッドを動作させます。
この実体化し動作しているものは、「インスタンス」と呼ばれます。
現実世界に当てはめれば、「ネコ」がクラスで、山本さんちの「タマ」や鈴木さんちの「ミケ」がインスタンスになります。
これは、単なる比喩以上の、クラスとインスタンスの関係です。
インスタンスは、コンストラクタ(クラス名(引数) 例 Color(255, 255, 255) ) の呼び出しで作られます。
フィールドには、数値、文字列、画像などの純粋なデータ以外に、他のクラスなどへの参照を含みます。
正確に言うと、数値・真偽値・1文字の文字(これらはプリミティブ型と呼ばれる)以外のデータ(文字列、画像など)は、クラスとして取り扱うことを強制されます。
さらに徹底しているのは、プリミティブ型のデータであっても対応するクラスが存在していることです。
フィールドは、次の2段階の手続きを踏むことによって、使用可能となります。
| 宣言 | 13 Color suncolor; |
12 Dimension dim; |
| 初期化 | 23 suncolor = new Color(255, 0, 0); |
19 dim = this.getSize(); |
suncolor を例にとると、まず13行目で、Colorクラスのインスタンスへの参照であると宣言されます。
そして、23行目で、赤色を持つインスタンスが作成され、それへの参照が suncolor に渡されます。
23行目以前の sunolor はどうなっているかというと、「null」という参照が無いことを示す値をもっています。
メソッドは、そのクラスやインスタンスに対して、実行要求できる動作を定義し、要求されたときの明細動作を記述したものです。
メソッドを呼び出して実行を要求するには、
クラス外部からは、「g.setColor(suncolor)」のように「クラスorインスタンス名.メソッド名(引数)」と書きます。
クラス内部からは、「setBackground(backcolor)」のように「メソッド名(引数)」と書きます。
内部メソッドであることを明示するように「this.setBackground(backcolor)」と書くこともできます。
このとき引数は、メソッドで定義されている型のデータで無ければなりません。
メソッドは呼び出されると、{ と }で囲まれた実行文の塊を順番に実行します。
実行文の実行を終えるときは、「return 戻り値;」というコードが無ければなりません。
但し例外として、戻り値型が、「void」と定義されていると「戻り値なし」の意味になりますので、必要ありません。
修飾子は、メソッドだけでなく、フィールド、ローカル変数、クラス、さらにまだ説明していないインタフェースなどにも使われます。
全部で12あり、Java の仕組みの根幹を支えるものです。
全体像は改めての説明にしたいと思います。
フィールド、メソッドについては、次の3つは区分して使う必要があります。
| public | どこからでもアクセス可能 |
| private | 定義クラスの中からのみアクセス可能 |
| なし | パッケージ内からのみアクセス可能 |
Java の構文の基本単位は、[;](セミコロン)で終わる単独文です。
Excel などの表計算ソフトを使ったことのある人には、
x = dim.width * 28 / 100;
などの「式文」はなじみやすいでしょう。但し、最後の[;](セミコロン)を忘れないように。
ここまでで出てきた文は、あと、宣言文、代入文、メソッド呼び出しです。
| 宣言文 |
Dimension dim; |
インスタンス参照や変数の使用を宣言します。 |
| 代入文 |
dim = this.getSize(); |
メソッドの戻り値、new演算子によって作られた新しいインスタンスを、インスタンス参照や変数に代入します。 |
| メソッド呼び出し |
g.fillOval(x, y, dist, dist); |
メソッドを呼び出して、その動作結果をプログラムの状態に反映させます。(副作用と呼びます。) |
Java では、データ・数値を記憶させる8種の基本データ型がサポートされます。
| 型 | 保持できる値 | サイズ | デフォルト値 |
| boolean | trueまたはfalse | 1 ビット | false |
| char | Unicode文字 符号なし整数 |
16 ビット | 0000 |
| byte | 符号付き整数 | 8 ビット | 0 |
| short | 符号付き整数 | 16 ビット | 0 |
| int | 符号付き整数 | 32 ビット | 0 |
| long | 符号付き整数 | 64 ビット | 0 |
| float | IEEE754 浮動小数点数 |
32 ビット | 0.0 |
| double | IEEE754 浮動小数点数 |
64 ビット | 0.0 |
表の中にあるデフォルト値は、フィールドとして宣言されたときに持つ値です。
メソッドの内部で一時的に使用される「ローカル変数」の場合には、初期化されるまで使用できません。
boolean型は、Java 言語の中で特別な位置を持っています。他の7種の型の間では相互変換が可能なのですが、boolean型はできません。
ですから、真偽値が必要な場合には、必ずboolean型のデータを定義しなければなりません。
| トップヘ | 目次ヘ | 前ヘ | 次ヘ |
Copyright (C) 2003 System Five Japan (Mori). All Rights Reserved
Java およびそのほか Java を含む標章は、米国 Sun Microsystems, Inc.の商標です