rejinky, Welcome to Javaranch We'd like you to read the Javaranch Naming Policy and change your publicly displayed name to comply with our unique rule. Thank you. As for your question, it doesn't matter what the accessibility of the constructors of the abstract class are. They may be public, protected, "default" or private, the bottom line is that at least one of them must be accessible for the subclass to invoke. The compiler won't allow you to invoke any constructor of an abstract class from outside a subclass of that abstract class.
Snigdha, That's exactly what I mentioned above: the bottom line is that at least one of them must be accessible for the subclass to invoke. If the constructor of class a is declared private, there is no constructor in class a for class b to access, thus the compilation error. The following code is perfectly legal:
Note that although there is a private constructor (which is used by the protected ones), the code compiles because there are other accessible constructors (the 2nd and 3rd). That's what I meant actually. Sorry if that wasn't clear