Why does this() and super() have to be the first statement in a constructor?

Paul Benedict pbenedict at apache.org
Fri Oct 7 09:58:22 PDT 2011


It's a compiler error because the superclass is guaranteed to be
initialized first before the subclass.

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