"Не удается создать экземпляр абстрактного класса или интерфейса" сообщение об ошибке C#

Я изменил свой базовый класс на abstract для проекта, и теперь я получаю следующую ошибку:

невозможно создать экземпляр абстрактного класса или интерфейса

Я получаю ошибку, потому что называю новый экземпляр abstract класс не пускают?

newPlane = new Airplane_Abstract(name, position);

3 ответов


вы не можете создать экземпляр абстрактного класса. Подумайте об этом как об интерфейсе, который также может содержать некоторую логику реализации. Что бы вы ожидали, если бы вы вызвали абстрактный метод экземпляра без определения?


Я видел ваш предыдущий вопрос, в котором вы спрашивали о значении "чистый виртуальный" (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, ты можешь? ("Создайте фигуру.""Что за форма?" "Никакой вид. Просто абстрактная форма.- На самом деле это не работает, не так ли?)


нельзя создать экземпляр абстрактного класса. Вот что!--1-->аннотация средства.