An attribute definition has the form
<id> : <type> [ <- <expr> ];The expression is optional initialization that is executed when a new object is created. The static type of the expression must conform to the declared type of the attribute. If no initialization is supplied, then the default initialization is used (see below).
When a new object of a class is created, all of the inherited and local attributes must be initialized. Inherited attributes are initialized first in inheritance order beginning with the attributes of the greatest ancestor class. Within a given class, attributes are initialized in the order they appear in the source text.
Attributes are local to the class in which they are defined or inherited. Inherited attributes cannot be redefined.