§A.1 Class definitions

Class definitions add two new keywords team and playedBy. Classes which use these keywords are called teams and bound roles, respectively. Any class that inherits from a bound role class (either by an extends clause or by implicit inheritance, cf. §1.3.1.(c)) is again a bound role class.

§ A.1.1 ClassDeclaration
[Modifiers] [team] class Identifier [extends Type] [implements TypeList]
[playedBy Type] [Guard] ClassBody
Contextual constraints:
  1. A class which has a playedBy clause (a bound role class) may not be declared static and must be directly contained in a class that has the team modifier (a team class).
  2. A class which inherits from a team class must have the team modifier, too.
  3. A class which has a guard (see §5.4) must be a team or a role.