Class Specifications Class specifications describe an abstract view of the contents and behavior of a class.
Specifications always refer only to specification fields, never to concrete fields.
Concrete fields depend on a particular implementation, so we don't want to expose them in a specification, which can be implemented in many different ways. Capitalized types refer to Java classes. The presence of a specification field does not imply anything about the interface or implementation of the class. The interface may not provide methods to query the specification field's state, so clients of the class may not have access to the information stored in the specification field. Likewise, the implementation may not actually have a concrete field of the specification field's type, since that information may be computed from multiple concerete fields, or it may not be available at all.