Абстрактный класс> обязательный конструктор для дочерних классов [дубликат]

Для выключения тех файлов просто добавьте эти строки к .vimrc (конфигурационный файл энергии на основанной на Unix ОС):

set nobackup       #no backup files
set nowritebackup  #only in case you don't want a backup file while editing
set noswapfile     #no swap files
8
задан Community 23 May 2017 в 12:17
поделиться

4 ответа

Вы не можете.

Однако вы можете установить один конструктор для класса FatherClass следующим образом:

protected FatherClass(string val1, string val2) {}

Что заставляет подклассы вызвать этот конструктор - это будет ' Поощряйте их предоставить конструктор string val1, string val2 , но не обязывают его.

Я думаю, вам следует рассмотреть вместо этого шаблон абстрактной фабрики . Это будет выглядеть так:

interface IFooFactory {
    FatherClass Create(string val1, string val2);
}

class ChildClassFactory : IFooFactory
{
    public FatherClass Create(string val1, string val2) {
        return new ChildClass(val1, val2);
    }
}

Везде, где вам нужно создать экземпляр подкласса FatherClass, вы используете IFooFactory, а не конструируете напрямую. Это позволяет указать подпись (строка val1, строка val2) для их создания.

19
ответ дан 5 December 2019 в 08:53
поделиться

Конструктор нельзя установить как абстрактный, но можно сделать что-то вроде этого:

 public abstract class Test
    {
        public Test(){}

        public Test(int id)
        {
            myFunc(id);
        }

        public abstract void myFunc(int id);
    }
0
ответ дан 5 December 2019 в 08:53
поделиться

Вы не наследуете конструкторы. Вам просто нужно будет реализовать его самостоятельно в каждом дочернем классе.

0
ответ дан 5 December 2019 в 08:53
поделиться

Проблема в том, что по умолчанию не абстрактный / статический класс всегда будет иметь пустой общедоступный конструктор по умолчанию, если вы не переопределите его с помощью private Constructor () {.. ..}. Я не думаю, что вы можете заставить конструктор с двумя строковыми параметрами присутствовать в дочернем классе.

0
ответ дан 5 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

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