No, that is not a solution. Do not mix up base classes and helper classes like that.
There should still be an abstract base class format_renderer_base, and all specific renderers like format_topics_renderer should be
class format_topics_renderer extends format_renderer_base {
and use parent:: like normal. Doing anything else leads to insanity.
When you have some common code that needs to be shared between different format renderers, but still overridable, don't put it in format_renderer_base. You need a new renderer
class core_course_commonbits_renderer extends plugin_renderer_base {
format_renderer_base, format_topics_renderer and similar classes will use methods of the course_commonbits_renderer to output shared stuff.