No hay mejores prácticas con respecto a la profundidad máxima de la herencia. En lugar de buscarlo en volumen, esta es la regla general en lo que respecta a la herencia en java (y cualquier lenguaje OO para el caso).
1_ Antes de implementar la herencia, compruebe si la relación "es una" es verdadera. El cargador es un auto. (Así que la herencia está bien). Si haces esto, entonces no terminarás con un gran árbol de herencia de todos modos. (La rueda no es un automóvil, entonces la herencia aquí es incorrecta)
2_ Si la relación "es una" falla o si tiene ambigüedad, entonces la herencia probable no es el camino. Debe identificar las características comunes entre sus clases y usar la composición (refactorizar el código común a una nueva clase).
3_ si desea establecer una jerárquica de tipo, entonces debe ir con herencia de interfaz (tipo) no herencia de nivel de clase. (Puede ser que algunas de estas afirmaciones necesiten más explicación, pero para eso es probable que necesites tomar un libro.)
Tan poco profundo como sea posible, tan profundo como sea necesario – CodesInChaos