% 4.3.2. クラスの定義
4.3.2. クラスの定義
defclass
マクロは、新しい名前付きのクラアスを定義するのに使われます。
クラスの定義には下記のものが含まれます。
新しいクラスの名前。 新しく定義されるクラスの名前は、正しい名前です。
新しいクラスのdirect
スーパークラスのリスト
スロット指定子の集合。 各スロット指定子には、スロットの名前と、 ゼロか複数のスロットオプションが含まれます。 ひとつのスロットオプションは、ただひとつのスロットに対応します。 もしクラス定義に2つの同じ名前のスロット指定子が含まれていたときは、 エラーが発生します。
クラスオプションの集合。 各クラスオプションは、クラスの全体として対応します。
スロットオプションとdefclass
フォームのクラスオプションは、
下記に従った仕組みを提供します。
与えられたスロットのデフォルト初期化値フォームを供給します。
スロットへの読み込みと書き込みに対して要求された ジェネリック関数のメソッドは自動的に生成されます。
与えられたスロットがそのクラスの全てのインスタンスに共有されるか、 あるいはそのクラスの各インスタンスが 自分自身のスロットを持つかどうかを制御します。
初期化引数の集合と、インスタンスが作成されるときに使われる 初期化引数のデフォルトを供給します。
標準以外の違うメタクラスのを指定します。
:metaclass
オプションはこの機能を使うために用意されており、
実装は:metaclass
オプションを使えるように拡張することができます。
スロットに格納される値に対して期待する型を指定します。
スロットに対してドキュメント文字を指定します。