Within a class hierarchy, encapsulation is weak. Subclasses aren't isolated from changes to their superclasses. Consider Figure 7 again. Changes in the definition of CQueryHandler ripple through the subclasses, so their implementation is dependent upon the superclass. With a complicated object hierarchy, a change in the base class can ripple down through dozens or hundreds of other classes.
Testing can quickly become a nightmare.
The other important risk to inheritance are transmuting objects, objects that change from one subclass to another. If you look at Figure 8, you'll see that some employees are also clients. They bring their animals to the clinic for treatment. Transmuting objects without composition. Figure 9 shows a different object solution, one based on composition.