posted 19 years ago
If I am mistaken about this, someone please correct me, but here is my understanding.
If there are multiple constructors defined within the abstract class, you could define some of those constructors to be private to ensure that they are only accessed from within the class itself. Perhaps this is some code that is common to all constructors, but you don't want it to be directly accessible from outside classes - you'd rather invoke that/those constructors from your other, more accessible, constructors.
However, if you only define private constructors, you're going to get a compiler error. The abstract class itself will compile without problem (I think), but any class that tries to extend that class will end up with an error. The reason for this is that the subclass needs to invoke a constructor of the parent class in order to complete the instantiation procedure. If the parent class has ONLY private constructors, you'll get an error here. This goes for ALL classes, not just abstract ones. A class with only private constructors defined is, in effect, implicitly final.