The Common Lisp Object System, a powerful system for object-oriented programming which forms part of Common Lisp.
CLOS differs from most other object-oriented programming environments in the following ways:
- It offers multiple dispatch, or "multimethods".
- Therefore, methods are not considered to live within classes; they are conceptually grouped into generic functions instead.
- CLOS doesn't provide encapsulation; that is considered to be the job of a different part of Common Lisp, the package system.
- Inheritance can cause methods to be combined together in arbitrarily complicated ways at the discretion of the programmer, and not merely overridden by one another.