为什么调用“this”必须是构造函数中的第一个语句?

时间:2016-08-30 09:41:27

标签: java constructor this

我正在尝试执行下面的代码示例,以了解为什么调用“this”必须是构造函数中的第一个语句?我读过很多关于它的内容,我明白为什么会这样!

所以我写下面这个简单的程序但是仍然向我显示相同的错误,即使我在我的程序中使用'this'作为第一个语句。

import java.io.*;
import java.lang.*;

class Demo
{
    int x=23;

    void Demo()
    {
        this(55);
    }

    void Demo(int x)
    {
        this.x=x;
        System.out.println("Inside Parameterise Constructor 2"+"\n Value of x:"+x);     
    }

}

class ThisDemo
{
    public static void main(String []args)
    {
        Demo obj;
    }
}

3 个答案:

答案 0 :(得分:3)

要专门回答您的问题,这个或超级需要成为第一个确保基类已正确设置的调用。 https://stackoverflow.com/a/1168356/154186

要解决上述错误,请从函数调用中删除void类型。 e.g:

Demo(int x) {
  this.x = x;
}
Demo() {
  this(50);
}

答案 1 :(得分:1)

从Demo构造函数中删除void

class Demo
{
    int x=23;

    Demo()
    {
        this(55);
    }
    Demo(int x)
    {
        this.x=x;
        System.out.println("Inside Parameterise Constructor 2"+"\n Value of x:"+x);     
    }
}

答案 2 :(得分:0)

你应该删除void.Constructor必须没有明确的返回类型。 然后它会正常工作。