我找不到为什么在C#中不允许从基类继承私有无参数构造函数的原因。这是最简单的例子:
<img [src]="image | safeUrl"/>
编译器不编译此代码。为什么会这样?当然,这个类并不是封闭的,虽然基类不是要多次实例化(如在Singleton中),但我认为派生类有权使用参数化构造函数多次实例化。 为什么在这种情况下不允许继承呢?
答案 0 :(得分:5)
因为您需要一个构造函数来实例化一个类,并且构造函数由您想要派生的类保持私有。除了班级本身之外,没有人可以访问它。尽管它知道它不存在! (例如,您可能希望对Singleton模式使用私有构造函数)
如果您想允许继承,但保持构造函数不被外部调用,则需要protected
关键字。
答案 1 :(得分:0)
如果使用private
修饰符,则无法从其他类访问某些内容;甚至来自派生类。
看看这个:Access Modifiers
<强>私有强>
只能通过同一类中的代码访问类型或成员 结构
因为在创建Base
的实例时必须调用Derived
构造函数,所以在您的情况下不能使用private
。您应该使用protected
代替。