【发布时间】:2023-03-04 04:22:02
【问题描述】:
我正在学习 C#。我对抽象类有些担心。抽象类不允许创建实例。为什么 c# 支持抽象类的构造函数。这里的主要目的是什么?
【问题讨论】:
标签: c# abstract-class
我正在学习 C#。我对抽象类有些担心。抽象类不允许创建实例。为什么 c# 支持抽象类的构造函数。这里的主要目的是什么?
【问题讨论】:
标签: c# abstract-class
因为抽象类仍然可以在其构造过程中包含需要初始化的东西,虽然它不能被直接实例化,但它仍然会被构造为被实例化的继承类型的一部分,因此仍然需要对其自身和关注点的创建控制程度。
【讨论】:
从您的abstract 类派生的类将需要一个实例构造函数来“链接”它们的构造函数。
正如格兰特所说,抽象类的构造函数可能会设置您的抽象类可能具有的许多(“具体”)状态。
注意:抽象类型的实例构造函数从不为public。由于您的问题中的原因,这将令人困惑。改为protected(或者可能是internal(不是 protected internal)或private)。
如果您没有显式地编写任何实例构造函数,编译器将为您生成一个“默认”构造函数,即抽象的 protected类。
【讨论】: