2-2: クラスとそのメンバーの記述

Javaのクラスの内部の構造について調べてみましょう。 Javaのクラスの構成要素は「メンバー」と呼ばれます。 どんなものが「メンバー」となり、 プログラムの中でどう記述すればよいかを解説します。


・ Javaのクラスのメンバーは全部で4種類あります。 それぞれ、「フィールド」、「メソッド」、「コンストラクタ」、「innerクラス」と呼ばれます。
「フィールド(field)」は単独のデータで、原始型の変数またはクラスのオブジェクトです。 それらの配列として宣言することもできます。 (Javaの初期には「変数(variable)」と呼ばれていました。)


/** クラスの定義 */
public class NewClass {

   /** 原始型のデータのフィールドの宣言 */
     public int x, y;

   /** Colorクラスのオブジェクトのフィールドの宣言 */
     public Color red;

   /** Colorクラスの配列のオブジェクトのフィールドの宣言 */
     public Color colors[];
}

・ 「メソッド(method)」は一連の処理の手続きをまとめたものです。 Cなどの言語の関数(サブルーチン)に当たるものです。 Javaのメソッドの記述方法は Cの関数のものをそのまま採用しています。 ただし Javaでは引数の個数や型、返値の型が異なれば、 名前が同一でも異なるメソッドと見なされます。 また void型で引数に Stringの配列を取る main() という名前のメソッドは、 特別な取り扱いを受けます。 クラスが仮想マシン(JVM)にロードされた時に最初に呼び出され、 アプリケーションの処理を開始する役割を果たします。
メソッドの内部にはローカル変数を自由に定義することができます。 ローカル変数は、そのメソッドの内部のみでアクセス可能です。 フィールドのデータは、同じクラス内のすべてのクラスからアクセスが許されます。


/** クラスの定義 */
public class NewClass {

   /** Colorクラスのオブジェクトのフィールドの宣言 */
     public Color color;

   /** Colorのオブジェクトを返すメソッドの定義 */
     public Color getColor() {
         return color;  // フィールドに記憶した値を返す
     }
}

・ 「コンストラクタ(constructor)」は、 オブジェクトを生成する際に必要となる手続きを定義したものです。 フィールドの初期値を設定したり、その他必要なデータの準備などを行います。 コンストラクタの記述の形式はメソッドとほぼ同じです。 ただしコンストラクタの名称は常にクラス名と同じです。 またコンストラクタは返値として返されるのが常に自分自身のオブジェクトです。 したがって返値の型の指定はありません。 コンストラクタ名(=クラス名)が返値の型を表していると解釈することもできます。


/** クラスの定義 */
public class NewClass {

   /** Colorクラスのオブジェクトのフィールドの宣言 */
     public Color color;

   /** NewClassのコンストラクタの定義 */
     public NewClass() {
         color = Color.red;  // フィールドの値を初期化する処理
     }
}

・ クラスの内部にさらにクラスの定義を記述することもできます。 こうしたクラスのことを「innerクラス」と呼びます。 innerクラスも通常のクラスと同じように、内部にメンバーを定義することができます。 innerクラスの中にさらに innerクラスを定義するという事も許されます。 innerクラスの内部のメンバーは、その外側の親にあたるのクラスの内部のどこからでも、 自由にアクセスすることができます。 (private,protected はさらにその外側からのアクセスに対して影響する。)


/** クラスの定義 */
public class NewClass {

   /** NewClassのinnerクラスの定義 */
     class InnerClass {
         private int x,y,z;  // NewClass内では自由にアクセス可能
     }
}

image
クラスの構造