Я видел ваш предыдущий вопрос, в котором вы спрашивали о значении «чисто виртуальный» (abstract
в C #).
Причина, по которой вы не можете создать экземпляр класса abstract
, заключается в том, что он предположительно имеет abstract
членов, а не имеет реализации . Скажем, ваш класс выглядит так:
abstract class Airplane_Abstract
{
public abstract int GetSomeInteger();
}
Тогда, предполагая, что вы можете создать один из них, вы можете написать код, подобный этому:
var airplane = new Airplane_Abstract();
// What would this be?
int integer = airplane.GetSomeInteger();
Конечно, я не верю, что у вас на самом деле есть , чтобы иметь абстрактные члены в абстрактном классе. Но общая идея абстрактного класса заключается в том, что он не может существовать сам по себе; это должно быть далее определено в классе, который наследуется от него. Абстрактные члены являются наиболее очевидной иллюстрацией того, почему это так; Могут быть и другие причины.
Вспомните, например, Shape
. Это довольно распространенный пример чего-то, что имело бы смысл как абстрактный класс. Вы не можете создать экземпляр просто a Shape
, не так ли? («Создайте фигуру». «Какую форму?» «Никакой. Просто абстрактная фигура. Разве это не работает, не так ли?)