Can we inherit class with private constructor in C#

You can’t access something from another class if the private modifier is used; even from a derived class. The type or member can be accessed only by code in the same class or struct. And because the Base constructor has to be called when an instance of Derived will be created you can’t use private in your case.

Rules of Private Constructor

  1. Private Constructor is generally used when you don’t want to create an object for the class. These are commonly used in classes that contain static members only. If a class has one or more private constructors and no public constructors, then other classes (except nested classes) are not allowed to create instances of this class.
  2. If you do not use an access modifier with the constructor it will still be private by default. The private modifier is usually used explicitly to make it clear that the class cannot be instantiated.
  3. A Private Constructor restricts access to the constructor. It ensures the object can only be created by a member in the type.
  4. We cannot inherit from classes that are having only private constructors. The reason is suppose if you are inheriting from a base class which has only private constructors and if you create an object for the derived class then the base class constructor will be called. Because the base class contains only private constructors and due to ‘private’ access modifier it is not accessible from the derived class. So it will give you an error with a syntax as follows ‘Error 1 ‘ConsoleApplication2.Program.Program()’ is inaccessible due to its protection level’

Similar Posts