Вы можете решить эту проблему, применив композицию вместо наследования : создайте новый класс, содержащий функциональные возможности, которые должны совместно использоваться двумя подклассами, и используйте ссылку на экземпляр нового класса внутрииз 2 подклассов.
Таким образом, вы избежите необходимости иметь дополнительный слой между подклассами и суперклассом, и ваш код будет более гибким и простым в обслуживании.
Этот подходрекомендуется почти всегда, когда неестественно добавлять некоторые общие функции в суперкласс и получать их через наследование.Если вы сомневаетесь, всегда спрашивайте себя, является ли отношение HAS-A (композиция) более подходящим, чем отношение IS-A (наследование).
Хотя группирование происходит вместеНесколько функциональных возможностей в одном суперклассе могут быть полезны, если вам нужно разделить одну функциональность между несколькими классами, возможно, будет более уместно реализовать ее с помощью композиции.