• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Liutauras Vilda
Sheriffs:
  • Rob Spoor
  • Junilu Lacar
  • paul wheaton
Saloon Keepers:
  • Stephan van Hulst
  • Tim Moores
  • Tim Holloway
  • Carey Brown
  • Scott Selikoff
Bartenders:
  • Piet Souris
  • Jj Roberts
  • fred rosenberger

abstract classes

 
Ranch Hand
Posts: 86
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
how are the constructors of abstract classes declared, public or private ?
 
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
Maria Garcia
Ranch Hand
Posts: 86
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
thank you Valentin for that immediate reply.
FYI, I already changed my Displayed Name.
 
Valentin Crettaz
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
FYI, I already changed my Displayed Name
Thank you very much
 
Ranch Hand
Posts: 128
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Valentin,
I get the following error when trying to compile superclass.
javac -classpath %CLASSPATH%;.\ b.java
b.java:3: a() has private access in a
public b(int t){
^
1 error



It works fine if I declare the constructor of a as public or protected.
 
Valentin Crettaz
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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
 
Snigdha Solanki
Ranch Hand
Posts: 128
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks It's clear now.
reply
    Bookmark Topic Watch Topic
  • New Topic