Похоже, что технически ограничений на количество многоуровневых наследований нет. Пример: класс D наследует класс C, который наследует класс B, наследующий класс A. Однако их имена начинают усложняться по мере того, как вы продолжаете наследовать.
Мне кажется, что на самом деле, имея базовый класс и используя Интерфейсы были бы лучшим подходом.
Проблема, с которой я столкнулся, заключается в том, что с интерфейсами я должен реализовать свойства в каждом классе. Используя базовый класс, я реализую их только в одном месте.
В моем сценарии у меня есть следующее:
- Базовый класс:
Animal
- Интерфейсы:
RankeableByLevel
(это имеет дополнительные свойства, которые позволяют ранжировать животных), FilterableByExpertise
(это имеет дополнительные свойства, позволяющие фильтровать животных).
Есть 10-15 Animal
подклассов , и около 7-8, которые можно было бы ранжировать и / или фильтровать. Я не хочу реализовывать интерфейсы в каждом из 7-8 классов (на мой взгляд, слишком много "дублирования").
Один из вариантов - создать базовый класс с именем AnimalRankeableByLevel
, а другой AnimalRankeableByLevelAndFilterableByExpertise
особенно этот последний кажется слишком длинным, чтобы быть правильным!
С интерфейсами мне пришлось бы слишком много «дублировать» реализацию. При наследовании слишком большого количества классов это выглядело бы неправильно (слишком длинное имя, слишком много наследований).
Каково было бы решение этой проблемы?
Спасибо!