0

I'm studying C#. I have some concerns about the abstract class. abstract class does not allow to create instance. Why does c# support constructor for abstract class. What is the main purpose here?

4

2 回答 2

5

因为抽象类仍然可以将需要初始化的东西作为其构造的一部分,虽然它不能直接实例化,但它仍然会作为被实例化的继承类型的一部分进行构造,因此仍然需要那种程度的创建控制它的自我和关注。

于 2013-05-30T15:36:55.257 回答
0

从您的类派生的abstract类将需要一个实例构造函数来“链接”它们的构造函数。

正如格兰特所说,您的抽象类的构造函数可能会设置您的抽象类可能具有的许多(“具体”)状态。

注意:抽象类型的实例构造函数不应该public. 由于您问题中的原因,这将令人困惑。让它们protected代替(或可能internal protected internal)或private)。

如果您没有显式编写任何实例构造函数,编译器将为您生成一个“默认”构造函数,这将是protected一个抽象类。

于 2013-05-30T15:43:20.503 回答