L'héritage est certainement l'un des concepts les plus précieux de programmation orientée objet. C'est une façon de compartimenter et de réutiliser du code en créant des ensembles d'attributs et de comportements appelés "classes", qui peuvent être basées sur des classes créées précédemment. Mais abuser de ce concept en créant un arbre d'héritage profond peut conduire à un code source très complexe et difficile à maintenir.

La plupart du temps, un arbre d'héritage trop profonde est dû à une mauvaise conception objet ayant conduit à utiliser systématiquement le principe d'héritage lorsque celui de composition aurait mieux convenu.