A herança é certamente um dos conceito mais valioso de programação orientada a objetos. É uma maneira de compartimentar e reutilizar código através da criação de coleções de atributos e comportamentos, chamadas classes, que podem ser baseadas em classes criadas anteriormente. Mas abusar desse conceito, criando uma árvore de herança muito profunda pode levar a um código fonte muito complexo e insustentável.

Na maioria das vezes, uma árvore de herança muito profunda é devido ao uso incorreto do design orientado a objeto que levou a usar sistematicamente 'herança' quando 'composição' poderia atender melhor.