クラスの特性の宣言 (Declaring characteristics of classes)

クラス定義(クラスについての前章を見よ)は sealed, open, primary,free, abstract, またはconcreteといった修飾子(adjectives)を 含むことができる。これらの修飾子はクラスの特性を宣言する。

クラスはsealedまたはopenであると宣言できる。クラスが sealedなら 同じライブラリ(library)明示的に定義されたものを除き、部分クラスをさらに つけ加えることはできない。したがって、シールドクラスを定義しているものとは別の ライブラリでシールドクラスの部分クラスを定義したり、上位クラスで<class>makeをシールドクラスに対して直接または間接に用いたりするとエラーとなる。 オープンクラスではこのような操作を禁止しない。シールドクラスにオープンな部分クラスを 定義するとエラーになる。

クラスを明示的に定めるとき、デフォルトではクラスはシールドとなる。これは明示的に オープンであると指定することで、上書きできる。<class>makeを 用いて作られたクラスはオープンである。makeを用いてシールドクラスを作る定まった やり方はない。

明示的に定義されたクラスは主要(primary)または自由(free)であると 宣言できる。デフォルトはfreeである。あるクラスが2つの主要上位クラスをもつことは、 一方が他方の部分クラスでない限り、正しくない。

明示的に定義されたクラスは抽象または具象であると宣言できる。デフォルトは 具象である。抽象クラスの上位クラスは抽象でなければならない。抽象クラスは普通 スロットを持たない。抽象クラスにスロットを定めることは禁止はされてはいないが、用心して 行うべきである。特に、インスタンス割り付けの(instance allocated)スロットではそうである。


目次 索引ダイナミズムの制御(章見出し)、 総称関数をシーリング宣言する (次節)