我将项目中的基类更改为abstract
,现在我收到以下错误:
无法创建抽象类或接口的实例
我收到这个错误是因为不允许命名一个abstract
类的新实例吗?
newPlane = new Airplane_Abstract(name, position);
我将项目中的基类更改为abstract
,现在我收到以下错误:
无法创建抽象类或接口的实例
我收到这个错误是因为不允许命名一个abstract
类的新实例吗?
newPlane = new Airplane_Abstract(name, position);
你无法创建抽象类的实例。可以将其视为包含一些实现逻辑的接口。如果调用没有定义的抽象实例方法,你会期望发生什么?
我看到了你之前的问题,你问的是"pure virtual"的意思(在C#中是abstract
)。
你不能实例化一个abstract
类的原因是它很可能有abstract
成员,且没有实现。所以,如果你的类看起来像这样:
abstract class Airplane_Abstract
{
public abstract int GetSomeInteger();
}
假设你能实例化其中之一,你可以编写如下代码:
var airplane = new Airplane_Abstract();
// What would this be?
int integer = airplane.GetSomeInteger();
虽然我不认为你必须在抽象类中有抽象成员,但抽象类的一般概念是它不能单独存在;必须进一步通过继承它的类进行定义。 抽象成员是这种情况最明显的例子;可能还有其他原因。
例如,考虑 Shape
。 这是一个相当常见的抽象类示例。 你不能真正地实例化一个只是一个 Shape
,对吗?(“创建一个形状。”“什么样的形状?”“没有样式,只是抽象形状。”不太可行,对吧?)
你不能创建一个抽象类的实例。这就是 抽象 的意思。