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

3

我试图执行下面的代码示例,以了解为什么调用“this”必须是构造函数中的第一个语句? 我已经阅读了很多关于它的文章,并且我明白为什么会这样!!

所以我编写了下面的简单程序,但即使我在程序中将“this”用作第一条语句,仍然显示相同的错误。

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

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);     
    }
    
}

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

7
void Demo() 并不是在声明一个构造函数,而是在声明一个返回类型为 void 的方法。需要翻译的内容已完成。 - Jon Skeet
明白了!!是个愚蠢的错误..谢谢 :) - Pravin Kamble
3个回答

4
为了具体回答您的问题,必须首先调用this或super以确保基类已正确设置。 https://dev59.com/uXM_5IYBdhLWcg3w6X1e#1168356 为解决上述错误,请从函数调用中删除void类型。例如:
Demo(int x) {
  this.x = x;
}
Demo() {
  this(50);
}

明白了!!是个愚蠢的错误..谢谢 :) - Pravin Kamble
这并没有回答问题,甚至连到另一个主题的链接也没有用。它仅仅解释了super()函数。 - Thomas Stubbe

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);     
    }
}

完美的..谢谢回复 :) - Pravin Kamble

0

你应该移除 void。构造函数必须没有显式的返回类型。 然后它就能正常工作了。


是的!!它正在工作...感谢您的回复。 - Pravin Kamble

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接