Итак, у меня есть целая группа классов, наследующих базовый класс. Каждый класс должен иметь собственный массив некоторых значений, в основном статический массив, так как мне не нужен один для каждого экземпляра. Но поскольку статические переменные не могут быть унаследованы, я должен был бы объявить этот статический массив для каждого отдельного класса и переопределить методы, работающие в массиве (даже если метод всегда один и тот же). Единственное решение, которое я могу подумать, - использовать нестатические массивы, но тогда у меня будет дополнительный массив для каждого экземпляра. Есть ли способ обойти? Чтобы иметь только один массив для каждого класса, а не объявлять несколько одинаковых методов?Как обходить статическое наследование свойств в ООП?
ответ
я бы объявить статический массив для каждого класса
Ну, вы вроде должны делать это в любом случае. Поскольку каждому нужна своя версия массива.
Вам не нужен массив экземпляров с очевидными соображениями производительности, что имеет смысл. Но как насчет метода метода для доступа к массиву? Что-то вроде этого:
abstract class Widget
static array MyValues = [1,2,3]
abstract array GetValues
return MyValues
void DoSomething
// reference GetValues instead of MyValues
Тогда в преобладающих классов:
class SpecificWidget inherits Widget
static array MySpecificValues = [2,3,4]
override array GetValues
return MySpecificValues
Механика может незначительно меняться в зависимости от используемого языка, но общая идея должна работать. Каждый тип определяет метод экземпляра, который может быть переопределен, единственная цель которого - действовать как своего рода фабрика для доступа к значениям.
После абстракции, подобные этим, эти ценности могут жить в основном где угодно. В статическом массиве во внешнем кеше где-то, в базе данных и т. Д. Остальная часть кода соединяется с абстракцией, а не с хранением значений.
Я думаю, что это самый простой способ, было бы неплохо сказать, что «каждый класс имеет этот массив длины N» в суперклассе, но он также сохраняет некоторое пространство, в котором те, кому нужен меньший массив, имеют разный размер для массива. – user2154768
- 1. Статическое наследование массива
- 2. Множественное наследование в ООП
- 3. Наследование ООП в PHP
- 4. Наследование ООП атрибутов
- 5. Python понимание ООП, наследование
- 6. Наследование интерфейса ООП
- 7. Статическое наследование переменных в Javascript (ES6)
- 8. ООП наследование стиля в Haskell
- 9. неправильные значения свойств ООП
- 10. ООП и наследование во вспышке
- 11. ООП и наследование рекомендации, необходимые
- 12. ООП и наследование частных полей
- 13. CoffeeScript статическое наследование дочерних классов
- 14. Как статическое наследование методов и наследование статической переменной различаются?
- 15. ООП Protoype и наследование в JavaScript,
- 16. ООП в C, наследование и ошибки
- 17. Статическое наследование Python в переменной класса
- 18. Как предотвратить наследование свойств пробела?
- 19. Наследование переменных свойств
- 20. Java наследование autowired свойств
- 21. Наследование свойств Python
- 22. Наследование свойств класса в Backbone
- 23. Наследование свойств контейнера IoC
- 24. Динамическое наследование свойств в Maven
- 25. Наследование свойств в Objective C
- 26. WPF: отключить наследование свойств
- 27. Наследование свойств объекта Javascript
- 28. Дизайн ООП - наследование от контейнера общим типом
- 29. Наследование свойств в WPF/Silverlight?
- 30. ООП: наследование с определением рекурсивного класса
Статические переменные не могут быть унаследованы? –