Ken,
This issue is one of confusing the two processes of inheritance and composition. While each of them is a very powerfull paradigm in OO they conflict with each other when they are intermixed. Composition is the last thing that should be done before using the class to create an object. Inheritance is something that is part of the class design process, that is it is used to create a hierarchy of classes that can be then used in composing finished objects. Once one has done composition, further subclassing introduces complexities that are better avoided.
It is not difficult, and in fact makes specialization easier, to avoid composition until the concrete class level, that is the last class level before creating the object.