Question: abstract classes have private constructor?
Answer: As mentioned, to be used as a common, internal-use only constructor. Abstract or not abstract, it's not uncommon to declare a private default constructor on a class containing only static public methods [helper methods] to prevent instantiating the class.