Self in init params

Instead of using Self or A in each of the initialisers, you can simply override each subclass’ initialiser to use its own type as operation. This works because A‘s initialiser states that operation should be a type that conforms to A, and when you override it you have the liberty to use a subclass of … Read more