我正在创建具有public void A()方法的A类,该方法将this()作为第一个语句。 A()方法显然不是构造函数,但编译器抱怨this()不是某些构造函数的第一个语句,我相信,它是用super()作为第一个语句隐式创建的。什么构造函数和编译器引用的this()语句是什么?谢谢。
Active
输出 错误:调用this必须是构造函数中的第一个语句 public void A(){this();} ^ 1错误
答案 0 :(得分:2)
super()
指的是父类的构造函数,this()引用子类的构造函数。你不能在任何地方使用this()
,除了在不同签名的构造函数中,并且只作为第一个语句。例如,这是有效的。
A(int x){
this(); // Calling a no argument constructor of the same class
}
但这是无效的,它会抛出编译错误,因为这是递归构造函数调用。
A(){
this();
}
您无法在方法中使用this()
。