Node:Class hierarchy and inheritance of slots, Next:, Previous:Inheritance, Up:Inheritance



5.4.1 Class hierarchy and inheritance of slots

Inheritance is specified upon class definition. As said in the introduction, GOOPS supports multiple inheritance. Here are some class definitions:

(define-class A () a)
(define-class B () b)
(define-class C () c)
(define-class D (A B) d a)
(define-class E (A C) e c)
(define-class F (D E) f)

A, B, C have a null list of super classes. In this case, the system will replace it by the list which only contains <object>, the root of all the classes defined by define-class. D, E, F use multiple inheritance: each class inherits from two previously defined classes. Those class definitions define a hierarchy which is shown in Figure 1. In this figure, the class <top> is also shown; this class is the super class of all Scheme objects. In particular, <top> is the super class of all standard Scheme types.

hierarchy.png
Fig 1: A class hierarchy

The set of slots of a given class is calculated by taking the union of the slots of all its super class. For instance, each instance of the class D, defined before will have three slots (a, b and d). The slots of a class can be obtained by the class-slots primitive. For instance,

(class-slots A) => ((a))
(class-slots E) => ((a) (e) (c))
(class-slots F) => ((e) (c) (b) (d) (a) (f))

Note: The order of slots is not significant.