Node:Class hierarchy and inheritance of slots, Next:Instance creation and slot access, Previous:Inheritance, Up:Inheritance
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.
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.