为什么不允许从具有私有构造函数的类继承

时间:2017-08-02 08:05:43

标签: c#

我找不到为什么在C#中不允许从基类继承私有无参数构造函数的原因。这是最简单的例子:

<img [src]="image | safeUrl"/>

编译器不编译此代码。为什么会这样?当然,这个类并不是封闭的,虽然基类不是要多次实例化(如在Singleton中),但我认为派生类有权使用参数化构造函数多次实例化。 为什么在这种情况下不允许继承呢?

2 个答案:

答案 0 :(得分:5)

因为您需要一个构造函数来实例化一个类,并且构造函数由您想要派生的类保持私有。除了班级本身之外,没有人可以访问它。尽管它知道它不存在! (例如,您可能希望对Singleton模式使用私有构造函数)

如果您想允许继承,但保持构造函数不被外部调用,则需要protected关键字。

答案 1 :(得分:0)

如果使用private修饰符,则无法从其他类访问某些内容;甚至来自派生类。

看看这个:Access Modifiers

  

<强>私有

     

只能通过同一类中的代码访问类型或成员   结构

因为在创建Base的实例时必须调用Derived构造函数,所以在您的情况下不能使用private。您应该使用protected代替。