A readonly class may only be extended by a readonly class

Inheritance is constrained in one direction only, which means a readonly base cannot be subverted and a mutable base can still be tightened.

readonly class Money {}

readonly class Gbp extends Money {}   // fine
class Loose extends Money {}         // Fatal error

// and the other direction, which IS allowed
class Base { public int $x; }
readonly class Tight extends Base {}
// Fatal — a readonly class cannot extend a non-readonly one
// either. the rule is symmetric.

The symmetry is the surprise: a readonly class cannot extend a mutable one, because the parent’s properties would then be readonly and the parent’s own methods might write to them. That makes readonly a property of a whole hierarchy rather than of one class, which is a stronger commitment than the syntax suggests and is worth knowing before applying it to a base class.