CLOS is a powerful dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java.
CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLoops, although it is more general than either.
Classes can have multiple superclasses, a list of slots (member variables in C++/Java parlance) and a special metaclass.
Additionally special generic functions can be defined to write or read values of slots.
CL programmers use the language's package facility to declare which functions or data structures are intended for export.
Additionally, the programmer can specify whether all possible primary methods along the class hierarchy should be called or just the one providing the closest match.
CLOS is dynamic, meaning that not only the contents, but also the structure of its objects can be modified at runtime.
The Circle-Ellipse Problem is readily solved in CLOS, and most OOP design patterns either disappear or are qualitatively simpler.
Outside of the ANSI Common Lisp standard, there is a widely implemented extension to CLOS called the Metaobject Protocol (MOP).
The flexibility of the CLOS MOP prefigures aspect-oriented programming, which was later developed by some of the same engineers, such as Gregor Kiczales.
The book The Art of the Metaobject Protocol describes the use and implementation of the CLOS MOP.
The various Common Lisp implementations have slightly different support for the Meta-Object Protocol.
PCL is implemented mostly in portable Common Lisp with only a few system dependent parts.