If I understood correctly, you have the following procedures:
-Show all the tiles
But you need:
-Show all the tiles and the character
To handle depth sorting.
A flexible solution would be to add a new depth sorting layer between the two classes you have and the actual rendering. So each class issues 'render requests' for tiles/character that includes the depth information (as in depthSortingRenderer.addSurface(x,y,depth, etc...) ), and then at the very end you sort them by depth and render them to screen in order.
Another approach would be to write up a new procedure that can render both tiles and characters in one go, but I couldnt decide where the logical place for that would be. Inheriting from both character and tile renderer is not it (its neither a tile renderer nor a character!). Inheriting from the tile renderer doesnt really keep it as a tile renderer anymore. Maybe you could modify the tile renderer so it renders a single layer at a time (tileRenderer.showLayer(N)) which would allow you to throw the character rendering in the right spot? Or anything like that (like .showAllTilesBetweenDepths(mindepth,maxdepth), or .renderAllTilesButCallThisCallbackJustBeforeRenderingThisDepth(callback lambda func,depth) so you can draw the character in the callback)
Dont really program much at all so not very good at code structuring issues