class Car and Truck are written here as an example but they could be unknown to the program at compile time.
there could be more kinds of cars not yet known
for
You want to use Self. In a protocol, it means "the type that actually adopts me". In a method of a class, it means "the class in which this method is actually called".
Self