C# 规范第 10.1.1.1 节指出:
允许(但不是必需)抽象类包含抽象成员。
这允许我创建这样的类:
public abstract class A
{
public void Main()
{
// it's full of logic!
}
}
甚至更好:
public abstract class A
{
public virtual void Main() { }
}
public abstract class B : A
{
public override sealed void Main()
{
// it's full of logic!
}
}
这确实是一个具体的类;就无法实例化它而言,它只是抽象的。例如,如果我想执行其中的逻辑,B.Main()
我必须首先获取 B 的实例,这是不可能的。
如果继承者实际上不必提供实现,那为什么称它为抽象呢?
换句话说,为什么 C# 允许只有具体成员的抽象类?
我应该提到我已经熟悉抽象类型和成员的预期功能。