Chapter 28
Common Lisp Object System

 28.1 Programmer Interface Concepts
  28.1.1 Error Terminology
  28.1.2 Classes
  28.1.3 Inheritance
  28.1.4 Integrating Types and Classes
  28.1.5 Determining the Class Precedence List
  28.1.6 Generic Functions and Methods
  28.1.7 Method Selection and Combination
  28.1.8 Meta-objects
  28.1.9 Object Creation and Initialization
  28.1.10 Redefining Classes
  28.1.11 Changing the Class of an Instance
  28.1.12 Reinitializing an Instance
 28.2 Functions in the Programmer Interface

Authors: Daniel G. Bobrow, Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon

This chapter presents the bulk of the first two chapters of the Common Lisp Object System specification; it is substantially identical to these two specification chapters as previously published elsewhere [567]. I have edited the material only very lightly to conform to the overall style of this book and to save a substantial number of pages by using a typographically condensed presentation. I have inserted a small number of bracketed remarks, identified by the initials GLS. The chapter divisions of the original specification have become section divisions in this chapter; references to the three chapters of the original specification now refer to the three “parts” of the specification. (See the Acknowledgments to this second edition for acknowledgments to others who contributed to the Common Lisp Object System specification.) This is not the last word on CLOS; X3J13 may well refine this material further. Keene has written a good tutorial introduction to CLOS [26].

—Guy L. Steele Jr.