Как я могу создать экземпляр абстрактного класса? [закрыто]

Я следую руководству здесь:

https://support.industry.siemens.com/cs/attachments/109773802/TIAPortalOpenness_en-US.pdf?download=true

и используя этот код со страницы 237:

      HardwareObject hwObject = ...;
string typeIdentifier = ...;
string name = ...;

int positionNumber = ...; 
if(hwObject.CanPlugNew(typeIdentifier, name, positionNumber)) {
    DeviceItem newPluggedDeviceItem = hwObject.PlugNew(typeIdentifier, name, positionNumber);
}

Но я не знаю, как определить эту часть:

      HardwareObject hwObject = ...;

Что мне назначить ?. HardwareObject это абстрактный класс, поэтому я не могу его инициализировать.

2 ответа

Как я могу создать экземпляр абстрактного класса?

Вы не можете. Фактически, невозможность создавать экземпляры - одна из самых важных причин, по которым мы изобрели и продолжаем использовать абстрактные классы.

Абстрактные классы существуют в цепочке наследования. Быть базовым типом, который вы используете в полиморфии. Способ убедиться, что в этом месте когда-либо будут использоваться только его неабстрактные дочерние элементы, но все дети могут поместиться.

Обратите внимание, что в C# используются перекрытия с интерфейсами. Но разница между интерфейсами и абстрактными классами достаточно хорошо объяснена в другом месте.

Что мне назначить?

Любой конкретный (неабстрактный / new'способный) производный тип (потомок) от HardwareObject будет хорошо

Другие вопросы по тегам