Shammer's Philosophy

My private adversaria

CLOSエクササイズ第02回

クラスの継承は、defclassの引数にスーパークラスをリストで指定する。

(defclass user ()
  ((name :accessor user-name)
   (pass :accessor user-password)
   (age  :accessor user-age)))

(defclass administrator (user)
  ((role :accessor role-name)))

このクラスの使用例はこんな感じ。

(defparameter user-0 (make-instance 'user))
(setf (user-name user-0) "Taro")
(format t "User-0 Name is ~A.~%" (user-name user-0))

(defparameter admin-0 (make-instance 'administrator))
(setf (user-name admin-0) "Jiro")
(setf (role-name admin-0) "Administrator")
(format t "Admin-0 Name is ~A.~%" (user-name admin-0))
(format t "Admin-0 role is ~A.~%" (role-name admin-0))

上記の実行結果は以下のような感じ。

User-0 Name is Taro.
Admin-0 Name is Jiro.
Admin-0 role is Administrator.