Inheritance captures the idea of the is-a relation. The new thing is a more specialized, or more complete, version of the old thing. So it is useful when a new software component extends or completes the behavior specified by an existing component.

The rule of thumb, if the sentence new thing is-a old thing sounds right, then inheritance can be used.

[audio] [real] Text to accompany slide5, in Chapter 9 of An Introduction to Object-Oriented Programming