The compiler generates a public, parameterless default constructor only if the class does not contain an explicit constructor. This class cannot be instantiated as long as a class contains a private constructor. Example:
1 //Tool Class2 Public classUtilityclass {3 //Private Constructors4 PrivateUtilityclass {5 Throw Newassertionerror ();6 }7 8 //Other operations ...9}
Assertionerror avoid invoking the constructor inside the class to ensure that the class is not instantiated under any circumstances. At the same time, this class cannot be overridden because the subclass constructor cannot explicitly or implicitly invoke the private constructor of the class (parent class).
Resources
"Effective Java Chinese version 2nd edition" P16
"Effective Java Chinese version 2nd edition" study Note 4th: The ability to harden non-instancing through private constructors