214 похожих чатов

Добрый вечер, подскажите как поступить в такой ситуации (C#).

Имеются классы X, Y, Z с цепочкой наследования X -> Y -> Z. Классы X и Y - абстрактные. В каждом классе 3 собственных (не унаследованных) поля и конструктор для инициализации этих полей.

Столкнулся с проблемой, что конструктору неабстрактного класса Z необходимо передавать в конструктор значение не для 3х собственных полей, а для 9 (3 собственных и по 3 из каждого из базовых классов). Таким образом у меня получился конструктор на 9 параметров, не смотря на то, что в каждом классе по 3 поля. Является ли это плохим кодом?

В данный момент я использую абстрактные свойства (вместо конструкторов) в классах X и Y, для того, чтоб класс Z был обязан их переопределить и, в то же время, не было необходимости объявлять конструктор на 9 параметров, т.к. в случае со свойствами можно использовать список инициализации объектов. Но при таком подходе в классе Z видны все эти свойства, что не критично, но возможно вредит инкапсуляции.

1 ответов

11 просмотров

ты переиграл сам себя. Наследование должно избавлять от повторение кода. Тоесть если тебе нужно много одинаковых классов с одинаковыми приватными полями, то в целом все верно. Поле ведь объявляется в нутри конкретного класса в момент наследования (хз, так вроде должно работать), так что инкапсуляция не страдает, но ты ооочень спорный пример наследования ради наследования привёл

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта