"无法创建抽象类或接口的实例"C#错误消息

Dav*_*wer 7 c# abstract-class

我将我的基类更改abstract为项目,现在我收到以下错误:

无法创建抽象类或接口的实例

我收到错误是因为abstract不允许命名新的类实例吗?

newPlane = new Airplane_Abstract(name, position);
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 19

您无法创建抽象类的实例.可以将其视为可能包含某些实现逻辑的接口.如果你调用一个没有定义的抽象实例方法,你会发生什么?


Dan*_*Tao 14

我看到了你之前的问题,其中你询问了"纯虚拟"的含义(abstract在C#中).

你不能实例化一个abstract类的原因是它可能有abstract成员,没有实现.所以说你的班级看起来像这样:

abstract class Airplane_Abstract
{
    public abstract int GetSomeInteger();
}
Run Code Online (Sandbox Code Playgroud)

然后假设您可以实例化其中一个,您可以编写如下代码:

var airplane = new Airplane_Abstract();

// What would this be?
int integer = airplane.GetSomeInteger();
Run Code Online (Sandbox Code Playgroud)

当然,我不相信你实际上必须在抽象类中有抽象成员.但抽象类的一般概念是它不能独立存在; 它必须在继承自它的类中进一步定义.抽象成员是最明显的例子,说明为什么会这样; 可能还有其他原因.

Shape例如,想想.这是一个非常常见的例子,它可以作为一个抽象类来理解.你真的不能实例只是一个Shape,可以吗?("创造一个形状.""什么样的形状?""没有那种.只是一个抽象的形状."不是真的有效,是吗?)


Joh*_*ers 5

您无法创建抽象类的实例.这就是抽象意味着什么.