Sahil Kapoor wrote:IMO private constructor has nothing to take with subclassing.
Of course the constructor affects subclassing. Remember that the constructor has to call the super classes' constructor via a call to super(). Even if no such call is made, a call to the default no-arg constructor is inserted. If the subclass doesn't have permission to access the super constructor, then it can't construct the super portion of the object ... hence, compile error.
Sahil Kapoor wrote:
But my question is ....Arrays is marked public and still cannot be subclassed ??? Why ??
The Arrays class *can* be subclassed ... but only from classes that can access the Array constructors. And since they are private, this is limited to the Arrays classes' inner classes.