Many texts refer to the Liskov Substitution Principle (or LSP) which states, rather more elegantly than I am about to, that inheritance should only be used if an instance of the subclass is, to all intents and purposes, an instance of the base class.
Read More