Имеются классы X, Y, Z с цепочкой наследования X -> Y -> Z. Классы X и Y - абстрактные. В каждом классе 3 собственных (не унаследованных) поля и конструктор для инициализации этих полей.
Столкнулся с проблемой, что конструктору неабстрактного класса Z необходимо передавать в конструктор значение не для 3х собственных полей, а для 9 (3 собственных и по 3 из каждого из базовых классов). Таким образом у меня получился конструктор на 9 параметров, не смотря на то, что в каждом классе по 3 поля. Является ли это плохим кодом?
В данный момент я использую абстрактные свойства (вместо конструкторов) в классах X и Y, для того, чтоб класс Z был обязан их переопределить и, в то же время, не было необходимости объявлять конструктор на 9 параметров, т.к. в случае со свойствами можно использовать список инициализации объектов. Но при таком подходе в классе Z видны все эти свойства, что не критично, но возможно вредит инкапсуляции.
ты переиграл сам себя. Наследование должно избавлять от повторение кода. Тоесть если тебе нужно много одинаковых классов с одинаковыми приватными полями, то в целом все верно. Поле ведь объявляется в нутри конкретного класса в момент наследования (хз, так вроде должно работать), так что инкапсуляция не страдает, но ты ооочень спорный пример наследования ради наследования привёл
Обсуждают сегодня