今天面试碰到一道题,是关于Constructor call must be the first statement in a constructor的问题的。
题目是这样的
super()和this.TestB(new Object());不能共存,否则编译时会报异常,换句话说就是super()和this.TestB(new Object());都必须在方法(构造方法)的第一行。
因此要成功编译上面的代码,必须要把TestB(Object a)这个方法修改成非构造方法,比如在前面加上void。
要了解更多请参考http://java.syntaxerrors.info/index.php?title=Constructor_call_must_be_the_first_statement_in_a_constructor
题目是这样的
public class TestA {
public TestA(){
System.out.println("A");
}
}
public class TestB extends TestA {
protected TestB(Object a){
System.out.println("B");
}
public TestB(){
super();
this.TestB(new Object());
}
}
public class Test {
public static void main(String[] ars)
{
new TestB();
}
}
super()和this.TestB(new Object());不能共存,否则编译时会报异常,换句话说就是super()和this.TestB(new Object());都必须在方法(构造方法)的第一行。
因此要成功编译上面的代码,必须要把TestB(Object a)这个方法修改成非构造方法,比如在前面加上void。
要了解更多请参考http://java.syntaxerrors.info/index.php?title=Constructor_call_must_be_the_first_statement_in_a_constructor