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.
CLOS has multiple inheritance
and, unofficially, a meta-object protocol