インスタンスとフィールド・メソッド

Since 2003.04.15  

クラスの構成要素

前回の後のほうのプログラムを見てください。完成形に比べると行が多くなっています。
できるだけ、1行に複数の意味を持たせないようにした為です。

9行目までは、今までのものと変化ありません。ここでは
11 public class Sunflag extends Applet { から
32 } まで
に注目してください。
空行も含めてのこの22行が、Sunflag クラスの定義になっています。

この中にあるのは、次の2種類です。

-構文名前
Dimension dim;
Color suncolor;
Color backcolor;
[修飾子][型][名前];
ここでの[修飾子]は「修飾なし」
フィールド
public void paint(Graphics g) { ...}
public void init() { ... }
[修飾子][戻り値型][名前](引数) { 実行コード } メソッド

「フィールド」は、クラスのデータ構造を収容する入れ物の定義です。
「メソッド」は、クラスの振る舞いを記述します。
但し、これらはあくまで、定義であり、記述です。

インスタンス

クラスは、クラスの外部から働きかけを受けて(アプレットの場合であれば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;
int x, y, dist;
インスタンス参照や変数の使用を宣言します。
代入文 dim = this.getSize();
suncolor = new Color(255, 0, 0);
メソッドの戻り値、new演算子によって作られた新しいインスタンスを、インスタンス参照や変数に代入します。
メソッド呼び出し g.fillOval(x, y, dist, dist);
this.setBackground(backcolor);
メソッドを呼び出して、その動作結果をプログラムの状態に反映させます。(副作用と呼びます。)

プリミティブ型(基本データ型)

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型のデータを定義しなければなりません。

トップヘ 目次ヘ 前ヘ 次ヘ