This is a brief introduction to CLOS that says enough for someone who already knows something about Common Lisp to start using CLOS.
CLOS stands for Common Lisp Object System and is pronounced "see loss" or "kloss". (Opinions differ as to which is right.) CLOS is the part of Common Lisp that is directly concerned with the usual features of object-oriented programming, such as classes and methods. CLOS contains a number of complex and powerful features, but it is not necessary to understand all of CLOS in order to use it effectively. The basic parts of CLOS, which will be covered here, include pretty much everything you'd find in a typical object-oriented language, plus a few other things, and are sufficient for a wide range of applications.
When using CLOS, we will want to do three things:
Define classes.
Construct objects that are instances of classes.
Define methods and generic functions.
We can do these things using only three new constructs: defclass for defining classes, make-instance for constructing instances, and defmethod for defining methods. defstruct can also be used to define classes, but it is more limited than defclass.
It's important to know how CLOS fits into the rest of Common Lisp. It turns out that all Common Lisp data objects are instances of classes. Consequently, you can define methods for all kinds of existing object types (such as numbers, hash-tables, and vectors); you don't have to use defclass at all before defining methods. Moreover, the objects created using defclass and make-instance can be used with ordinary Lisp functions, not only with methods