It blew my mind too.

It should be aware of the subclass, in the sense that it needs to #include the subclass's header file (or they could be in the same header file).