Здравствуйте, Codealot, Вы писали:
C>есть внятные объяснения?
Но зачем он нужен?
Наследование же нужно для диспетчеризации (выбора метода на основании типа объекта).
Пока нет объекта какой смысл в наследовании?
Более того, клиенты использующие конструкторы и использующие методы самого объекта обычно разные. Конструируют объекты обычно фабрики и DI контейнеры.
И там явно указывается объект какого типа и как сконструировать.
Ну и логически размышляя, если у объектов одинаковые api (т.к. наследование) и одинаковые конструкторы, следовательно у них одинаковые зависимости и следовательно они не отличатся! Либо реализуют паттерн стратегия.
Пока не могу себе представить где бы мне понадобилось наследование классов стратегий с наследованием конструкторов.
Вот даже гипотетически пусть есть такой код:
var someObject = new BaseClass(4, "some string");
var otherObject = new DerivedClass(4, "some string");
Как наследование конструкторов упростит мой код? Мне же все равно придется писать явно тип наследуемого класса в коде.
А что делать если я не хочу наследование констуркторов? Мне как-то в наследнике придется помечать конструкторы которые нужно "отключить"?
var someObject = new BaseClass(4, "some string");
var ottherObejct = new LoggerDecoratedObject(someObject);
я бы вот точно не хотел что бы у LoggerDecoratedObject были конструкторы из BaseClass.