我在学习C#。我对抽象类有些担忧。抽象类不允许创建实例。为什么c#支持抽象类的构造函数。这里的主要目的是什么?
答案 0 :(得分:5)
因为抽象类仍然可以将其作为构造的一部分进行初始化,并且虽然它不能直接实例化,但它仍然会被构造为实例化的继承类型的一部分,因此仍然需要自我和关注的创造控制程度。
答案 1 :(得分:0)
从abstract
类派生的类将需要一个实例构造函数来从其构造函数中“链接”。
正如Grant所说,抽象类的构造函数可能会设置很多(“具体”)状态,这是抽象类可能具有的。
注意:抽象类型的实例构造函数永远不会为public
。由于你问题的原因,这会令人困惑。改为使用protected
(或可能internal
(不 protected internal
)或private
)。
如果 您没有显式编写任何实例构造函数,编译器将为您生成一个“默认”构造函数,它将为protected
一个抽象类。