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