Value intended not to change.

Type combining requirements of multiple types.

Variable stored as part of an object or record.

Named storage location whose value can change.

Type formed from combinations of other types.

Subtypes should be usable as their base types.

Function associated with an object or class.

Combination of values, operators, and functions producing a result.

Type containing a fixed set of named values.

Prefer small, focused interfaces.