Как я могу создать экземпляр абстрактного класса? [закрыто]
Я следую руководству здесь:
и используя этот код со страницы 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
будет хорошо