While developing program or implementing Singleton pattern we have learnt to mention constructor as private and known reason is -> to blocked its direct call from outside of class. But did we think about other aspects of this change.
When we want to restrict any class to be sub classed then the direct approach we know to make it final. but here are also other ways where eventually its ended up with blocked for getting sub claassed (in some extent). If we will make the constructor private then this will also avoid the direct subclassing. Untill and unless there is over-loaded constructor which is non private and we make the call externally. by default the compiler genrates the code and super call for no arg constructor only. even most of the pojo based tools also work and depend upon no arg default constructor. but once this default constructor being mentioned private for any class then that class directly can not be subclassed.