Задать вопрос
JoeSmith3100
@JoeSmith3100
Начинающий программист C#

Почему использовать внутри класса костыль protected constructorName() {} для того чтобы унаследовать этот класс другому — плохая идея?

Допустим описанный класс от которого хотим наследоваться имеет только конструкторы с параметрами (там нет смысла использовать констр-р без параметров)

Но такой подход может показаться многим неверным, так вот, как сделать так, чтобы можно было не пилить такие костыли? Чтобы код внизу выглядел адекватнее и всё компилировалось

Class A {
    protected A () {
    
    }
    public A (int _param) {
    
    }
}

class B : A
{

}


Ну и конечно было бы отлично узнать почему такой подход в корне неверен
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Если конструктор без параметров не имеет смысла, то не надо его создавать. В таком случае наследующий класс будет обязан позаботиться об аргументах. И это нормально.
Ответ написан
Комментировать
@Voland69
Если конструктор без параметров не имеет смысла, значит класс необходимо инициализировать.
В дочернем классе будут те же свойства, что и в родительском + новые. Логично предположить, что свойства родительского класса в дочернем тоже должны быть инициализированы (как минимум вызвав метод базового класса в дочернем можно выстрелить себе в ногу, считая что у нас все нужные переменные инициализированы в конструкторе, что в случае такой заглушки неверно).
Поэтому нужно делать что-то типа такого:
Class A 
{
    public A (int _param) 
    {
    
    }
}

class B : A 
{
    public В (int _param) : base(_param) 
    {

    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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