(defclass A (is-a USER))
Класс а наследует свои свойства непосредственно от класса user. Список предшествования классов для a: a user object.
Пример 11.2. Класс В
(defclass В (is-a USER))
Класс в также наследует свои свойства непосредственно от класса USER. Список предшествования классов для B: B USER OBJECT.
Пример 11.3. Класс C
(defclass С (is-a А В))
Класс C наследует свои свойства от классов A и B. Список предшествования классов для C: C A B USER OBJECT.
Пример 11.4. Класс D
(defclass D (is-a В А))
Класс D наследует свои свойства от классов B и A. Список предшествования классов для D: D B A USER OBJECT.
Пример 11.5. Класс Е
(defclass E (is-a А С))
По правилу 2 класс A должен предшествовать C. Однако C является подклассом A и не может следовать за A в списке предшествования классов без нарушения правила 1. Таким образом, подобное определение класса E является ошибкой.
Пример 11.6. Допустимое определение класса E
(defclass E (is-a С А))
Указание класса A в списке суперклассов класса E в данном случае является излишним, т. к. класс C является наследником A. Однако такое определение класса E не нарушает правил, используемых для определения списка предшествования классов, и допустимо. Список предшествования классов для E: Е С А В USER OBJECT.
Пример 11.7. Класс F
(defclass F (is-a С В))
Указание класса B в списке суперклассов класса F излишне, т. к. C является наследником B. Список предшествования классов для F: F C A B USER OBJECT. По правилу 2, в списке предшествования классов для класса F, в должно следовать за C, но это не означает, что класс в должен непосредственно следовать за классом C.
Пример 11.8. Класс G
(defclass G (is-a С D))
В данном конструкторе defclass допущена ошибка, нарушающая правило 2. Определение класса C утверждает, что класс а должен предшествовать классу B, но список предшествования классов D говорит обратное.