title: Are there good reasons for a public constructor of an abstract class
body: <p>It is not possible to create an object by directly calling the constructor of an <code>abstract</code> class. The constructor of an <code>abstract</code> class can be called only from a derived class. It therefore <em>seems</em> to me that constructors of an abstract class must be either <code>protected</code> or package-private (the latter for the unusual cases of restricting use of a constructor to derived classes within the package). Yet Java allows the constructor of an <code>abstract</code> class to be <code>public</code>.</p>
  
  <p>Are there any circumstances in which it is <em>useful</em> to declare the constructor of an <code>abstract</code> class to be <code>public</code>, rather than <code>protected</code> or package-private?</p>
  
  <p>This is not quite a duplicate of the question "<a href="https://stackoverflow.com/questions/260744/abstract-class-constructor-access-modifier">Abstract class constructor access modifier</a>": clearly you <em>can</em> declare a constructor to be <code>public</code>; I want to know whether there is ever any <em>good</em> reason to do so. It seems to me that there is not. I see that <a href="https://stackoverflow.com/questions/2742408/relevance-of-public-constructor-in-abstract-class">C# has a similar peculiarity</a>.</p>