Короткий вопрос
Насколько я знаю, большинство языков ООП не позволяют наследовать статические поля. (C ++, Java, C #)
С другой стороны, ООП говорит, что не следует дублировать код.
- Есть ли в языках ООП общий способ, который делает что-то вроде «наследования статических полей»?
- Знаете ли вы более простой, уникальный для конкретного языка способ решения проблемы?
- Существуют ли языки, в которых есть "встроенная"? (Я имею в виду как ключевое слово.)
(В любом случае, я знаю основное назначение статических полей, я просто хочу углубиться и избежать дублирования.)
Моя конкретная проблема
Я хочу создать фреймворк (C # или Java) и упростить его расширение. Поэтому я хочу, чтобы ограничения и информация о унаследованных классах как можно скорее поместили в базовый класс.
Я знаю, что каждый унаследованный класс должен иметь собственное статическое поле. (Я хочу создать счетчик объектов для каждого подкласса.)
Поэтому кажется логичным сделать что-то вроде «наследования статического поля» - где статическое поле необходимо для подклассов, а не для базового класса.
Я видел несколько хитрых решений (например: в C # использовались дженерики в C # наследование статических полей абстрактного класса), но я не могу поверить, что нет более простого способа.
Если нет более простого способа, объясните мне, как мне узнать об использовании дженериков?
Как мне смотреть на дженерики в контексте? Какие проблемы я должен с ними связать?
(В школе мы учили этому только «чтобы избежать дублирования кода», статическое отсоединение поля не акцентировалось! В этом контексте мне кажется, что дженерики являются классами и экземплярами одновременно, но я пока не нашел для этого понятного логического подхода.)