Classes describe families of objects, all of which possess the same structural features. Each object is viewed as a map from a unique identity to a set of names. The map is the same for all direct instances of a given class. These names in turn map to slots, which may be different for each object. Unlike record fields, slots are computationally defined. There are three kinds of slots:
Slot declarations within a class are processed such that undeclared slot identifiers are accepted as long as the declarations are made prior to the closing of class scope. Slot names and arguments normally correspond to message names and fields that are accepted by instances of the class. However, internal local versions of any of the above may also be declared. Groups of local slots may be declared within locals ... end.