日期:2014-05-20  浏览次数:20755 次

请假构造方法里面同时出现this(),与super()问题
public class A extends B{
public A(){
super(2,3);
this(3,4);
}
public A(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
public static void main(String[] args) {
A a = new Test();
}
}
class B{
public B(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
}

请问大神这个是怎么回事?在线等,谢谢

------解决方案--------------------
super和this都必须放在第一行,这是因为构建当前对象的时候必须先调用基类的构造函数。(这句话没有逻辑错误,因为隐藏着另一层逻辑,自己琢磨琢磨看)

我不知道你这样做的目的是啥,如果不是为了解决实际问题,研究这个没有意义。


------解决方案--------------------
个人理解:
使用this(当然调用重载构造函数里面可以再调用this),但最终肯定有一个重载的构造函数会用super调用父类的构造函数,所以:
1   如果有构造函数里有this, 那你后面不再需要super语句了。
2   如果你用了super 语句了,后面再用this,重载的构造方法还会调用super,这样也不应该了。