アクセス制御
アクセス修飾子
openとclosedキーワードはアクセス修飾子である。アクセス修飾子はメンバのアクセスレベルを決定する。
メンバ定義の先頭でopenキーワードを指定すれば、そのメンバはopenメンバである。openメンバはプログラムの任意の場所で呼び出すことが出来る。
メンバ定義の先頭でclosedキーワードを指定すれば、そのメンバはclosedメンバである。closedはそのメンバが定義されたクラス定義の中でしか呼び出すことはできない。
デフォルトのアクセスレベル
フィールドは常にclosedである。したがってアクセス修飾子は必要ない。
他のメンバーはデフォルトのアクセスレベルを持たない。したがって、フィッタ、セッタ、ゲッタ、およびメソッド定義の最初にアクセス修飾子を指定する必要がある。
クラスは常にopenである。したがって定義にアクセス修飾子は必要ない。
クラスレベルのカプセル化
Riceのアクセス制御はクラスレベルで行われる。つまり、クラスAの定義は全てのクラスAのインスタンスのclosedメンバにアクセス出来る。
class sample
int _fi;
...
open setter Fi(sample val)
_fi = new int(val._fi); // ♦1
endsetter
...
endclass
♦1: valはsampleなので、sampleの定義はvalのclosedメンバーにアクセスすることができる。