next up previous

9.3.1 Multiple Inheritance

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



next up previous