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