A private constructor prevents the class from being instantiated (see the Math class). A class with protected constructors could only be instantiated by a child of that class or by a class within the same package as that class.
jls:
A protected constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.