Пример 11.1. Класс А

(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 говорит обратное.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: