Tienes los conceptos de "herencia" realmente tergiversados, no debes de heredar por heredar (reutilizar código) debe de existir una relación de dependencia :s
Que funcione no quiere decir que este bien hecho lo que estas pseudo tratando de hacer con objetos.