Why does this() and super() have to be the first statement in a constructor?
Daniel Yokomizo
daniel.yokomizo at gmail.com
Fri Oct 7 16:39:51 PDT 2011
On Oct 7, 2011 1:58 PM, "Paul Benedict" <pbenedict at apache.org> wrote:
>
> It's a compiler error because the superclass is guaranteed to be
> initialized first before the subclass.
Not guaranteed by the JVM, as in anonymous inner classes.
> On Fri, Oct 7, 2011 at 11:51 AM, Vimil Saju <vimilsaju at yahoo.com> wrote:
> > If you have subclass then java requires that this() or super has to be
first statement in the constructor of the subclass.
> > Here is an example
> >
> > publicclassMyClass{
> > publicMyClass(intx){}
> > }
> >
> > publicclassMySubClassextendsMyClass{
> > publicMySubClass(inta,intb){
> > intc =a +b;
> > super(c); // COMPILE ERROR
> > }
> > }The above compilation error can be resolved by rewriting the code in
the constructor as follows
> >
> > publicclassMySubClassextendsMyClass{
> > publicMySubClass(inta,intb){
> > super(a + b);
> > }
> > }Can't the Java compiler detect that in the previous code there was no
access to the instance fields or methods and therefore allow the code to
compile without any error.
> >
> >
>
More information about the coin-dev
mailing list