Yes, we can declare a constructor as private. If we declare a constructor as private we are not able to create an object of a class. We can use this private constructor in the Singleton Design Pattern.
Conditions for Private Constructor
- A private constructor does not allow a class to be subclassed.
- A private constructor does not allow to create an object outside the class.
- If all the constant methods are there in our class we can use a private constructor.
- If all the methods are static then we can use a private constructor.
- If we try to extend a class which is having private constructor compile time error will occur.
Example
class SingletonObject { private SingletonObject() { System.out.println("In a private constructor"); } public static SingletonObject getObject() { // we can call this constructor if (ref == null) ref = new SingletonObject(); return ref; } private static SingletonObject ref; } public class PrivateConstructorDemo { public static void main(String args[]) { SingletonObject sObj = SingletonObject.getObject(); } }
Output
In a private constructor