If one class inherits from another class, the first class is a
subclass of the second class, and the second
class is a superclass of the first class.
Every user-defined class must have at least one direct
superclass, i.e. at least one class must appear in the is-a
portion of the defclass. Multiple inheritance
occurs when a class has more than one direct superclass. COOL
examines the direct superclass list for a new class to establish
a linear ordering called the class precedence list.
The new class inherits slots and message-handlers from each of
the classes in the class precedence list. The word precedence
implies that slots and message-handlers
of a class in the list override conflicting definitions of another
class found later in the list. A class that comes before another
class in the list is said to be more specific. All
class precedence lists will terminate in the system class OBJECT,
and most (if not all) class precedence lists for user-defined classes
will terminate in the system classes USER and
OBJECT. The class precedence list can be listed using the describe-class
function (see section 13.11.1.4).
9.3.1.1 Multiple Inheritance Rules