mike;


Why can't I make an array of a parent type with objects of a single
type, which is a child of the parent?


Because you forgot to cast. You can cast anything to a type that it extends or that extends it (this includes Object). As long as you keep your inheritance very clean and overload member functions carefully this works fine and shouldn't damage your sanity.  At least not much. Most of the time.

Yours,
Kas.