Home News DOC Class DL Others Cooker
Documents  >  Tutorial  >  フィールド宣言
フィールド宣言

フィールドはクラスの個々のインスタンスの状態を保持するための変数です。


目次:


書式

クラス名

フィールド名

セミコロン

特徴

書式

フィールド宣言は以下の形式です。


クラス名 フィールド名;


クラス名とフィールド名を指定してセミコロンで終わる宣言文です。

フィールド名が異なりクラス定義内の他のメンバー定義の外ならば、任意の場所で幾つでも宣言することが出来ます。

宣言されたフィールドはクラスのスコープ内で参照可能です。したがって、クラス定義の任意の場所で参照できます。

クラス名

クラス名は、フィールドに拘束されるクラスの名前です。

Rice は強く型付けされた言語ですので、フィールドや変数を名前だけで宣言することはできません。クラスの種類と名前の組が必要になります。

フィールド名

フィールド名はフィールドにアクセスするために使う識別子です。命名規則は一般の識別子と同じです。

フィールド名には、他のメンバと衝突しないユニークな名前を指定してください。名前が衝突した場合は例外が発生するか名前の隠ぺいが起こります。

セミコロン

フィールド宣言の終了はセミコロンで表します。セミコロンは Rice で使用される一般的な文の終了記号です。

特徴

Rice のフィールドには、いくつかの特徴があります。


宣言はできるが定義はできません。

未知のクラスを宣言することができます。

クラス定義内だけでアクセスできます。

宣言と定義

Riceの フィールドは、宣言と同時に定義することが出来ません。

すなわち、

int intField = 10;

のような定義文は認められません。フィールドの初期化は後述するフィッタで行います。

フィールド宣言は名前とクラスを関連付けるためだけの単なる場所取りです。

未知のクラスの宣言

宣言の前にクラスが定義されていなくても、フィールドを宣言できます。

後で定義されるクラスをフィールドとして先に宣言すると dummy クラスが仮置きされます。dummy クラスは仮置き専用のクラスです。

本来のクラスの定義が終了しても仮置きされた dummy クラスは、そのままです。

つまり、このようなフィールドを持つクラスは不完全な状態になります。クラスを使用する前にフィッタを使って完全な状態に初期化してください。

アクセス制御

フィールド以外のメンバーは、定義の先頭で適切なキーワード (open/closed) を使うことによってアクセスレベルを制御出来ます。

open メンバーはクラス定義の外部から呼び出せます。closed メンバーはクラス定義の外部から呼び出せません。

フィールドのアクセスレベルは closed で固定されているので、その様なアクセス制御のための記法を持ちません。フィールドに直接アクセスできるのはクラス定義の内部だけです。

例として example クラスと circular クラスを定義します。

4行目で circular クラスがフィールドとして宣言されています。これが"未知のクラスの宣言"になります。

1:

class example

2:

int x;

3:

int y;

4:

circular cirField; // 未知のクラス。dummy クラスが仮置きされています。

5:

open fitter example(circular cir) // フィッター。別ページで詳説します。

6:

cirField = cir;

7:

endfitter

8:

endclass

9:

10:

class circular

11:

bool boolFied;

12:

endclass

次の様にすれば example クラスを完全な状態に初期化できます。

1:

circular cir;

2:

example ex = new example(cir); // フィッターで circular クラスに置き換える。

Copyright © Rice All rights reserved.