### §1.3.2 Regular role inheritance

In addition to implicit inheritance, roles may also inherit using the standard Java keyword `extends`. These restrictions apply:

#### (a) Super-class restrictions

If the super-class of a role is again a role it must be a direct role of an enclosing team This rule is simply enforced by disallowing type anchors in the `extends` clause (see §1.2.2.(g)). As an effect, the super-class may never be more deeply nested than the sub-class.

#### (b) Inheriting and overriding the extends clause

If a role overrides another role by implicit inheritance, it may change the inherited `extends` clause (see §1.3.1.(g) above) only if the new super-class is a sub-class of the class in the overridden extends clause. I.e., an implicit sub-role may specialize the extends clause of its implicit super-role.

#### (c) Constructors and overridden 'extends'

Each constructor of a role class that overrides the extends clause of its implicit super-role must invoke a constructor of this newly introduced explicit super-class. Thus it may not use a `tsuper` constructor (see §2.4.2).

#### (d) Adding implemented interfaces

`implements` declarations are additive, i.e., an implicit sub-role may add more interfaces but has to implement all interfaces of its implicit super-role, too.

#### (e) Visibility of inherited methods

When a role inherits non-public methods from a regular class (as its super class), these methods are considered as private for the role, i.e., they can only be accessed in an unqualified method call `m()` using the implicit receiver `this`.