为什么在void方法中不允许this()?

时间:2018-06-02 05:06:59

标签: java constructor this

我正在创建具有public void A()方法的A类,该方法将this()作为第一个语句。 A()方法显然不是构造函数,但编译器抱怨this()不是某些构造函数的第一个语句,我相信,它是用super()作为第一个语句隐式创建的。什么构造函数和编译器引用的this()语句是什么?谢谢。

Active

输出     错误:调用this必须是构造函数中的第一个语句         public void A(){this();}                             ^     1错误

1 个答案:

答案 0 :(得分:2)

super()指的是父类的构造函数,this()引用子类的构造函数。你不能在任何地方使用this(),除了在不同签名的构造函数中,并且只作为第一个语句。例如,这是有效的。

          A(int x){
              this(); // Calling a no argument constructor of the same class
          }

但这是无效的,它会抛出编译错误,因为这是递归构造函数调用。

          A(){
             this();
          }

您无法在方法中使用this()