クラスを定義する - lisp-cookbook-ja/common-lisp GitHub Wiki

オブジェクトシステム(CLOS)

クラスを定義する

クラスを定義するには、 defclass を使用します。 defclass には様々なオプションがありますが、最も簡単な定義は下記のようなものになるでしょう。

また、スーパークラスの指定を省略した場合、 standard-object をスーパークラスに指定したことになります。

;; 構文
(defclass クラス名 (スーパークラス*)
  (スロット*))

;; 例
x yというスロットを持つfooクラスを定義
(defclass foo () 
  (x y))

(defclass bar (foo) ;fooを継承
  (z))

;; 確かめる
(describe (make-instance 'bar))
;-> #<BAR 23498C67> is a BAR
;   Z      #<unbound slot>
;   X      #<unbound slot>
;   Y      #<unbound slot>