我收到错误"错误:递归构造函数调用",这似乎与没有使用参数初始化的构造函数关联,并且只使用this(),我拥有所有构造函数签名不同,所以我不确定问题是什么。我不知道怎么不正确使用这个()?
public class passenger{
private int checkedBags;
private int freeBags;
private double bagsFee;
public int getCheckedBags(){
return this.checkedBags;
}
public void setCheckedBags(int checkedBags){
this.checkedBags=checkedBags;
}
public int getFreeBags(){
return this.freeBags;
}
public void setFreeBags(int freeBags){
this.freeBags= freeBags;
}
public double getBagsFee(){
return this.bagsFee;
}
public void setBagsFee(double bagsFee){
this.bagsFee=bagsFee;
}
//all the examples I looked up online seem to correlate with one constructor not being intitialized
passenger(int checkedBags, int freeBags, double bagsFee){//this is
this.checkedBags= checkedBags;
this.freeBags= freeBags;
this.bagsFee= bagsFee;
}
passenger(int freeBags){
this(freeBags);//giving error
}
passenger(double bagsFee){
this(bagsFee);//giving error
}
passenger(){
}
public static void main(String[] args){
passenger john= new passenger();
passenger kate= new passenger(2,1,100d);
System.out.println(john.getCheckedBags());
System.out.println(john.getFreeBags());
System.out.println(john.getBagsFee());
System.out.println(kate.getCheckedBags());
System.out.println(kate.getFreeBags());
System.out.println(kate.getBagsFee());
}
}
答案 0 :(得分:3)
您的错误构造函数正在调用自己:
passenger(int freeBags){
this(freeBags); // what do you expect this to do?
}
"链接"涉及调用不同的构造函数,而不仅仅是重新调用相同的构造函数(它将无限地重新调用自身)。因此,例如,您可能使用默认参数调用您的第一个构造函数:
passenger(int freeBags){
this(0, freeBags, 0.0d);
}
所以最终你有一个"主要"执行实际构造逻辑的构造函数,重载的构造函数是传递给那个构造函数的。