我收到错误"错误:递归构造函数调用",这似乎与没有使用参数初始化的构造函数有关,并且仅使用 this((,我所有的构造函数签名都不同,所以我不确定问题是什么。我不知何故没有正确使用 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());
}
}
您的错误构造函数正在调用自己:
passenger(int freeBags){
this(freeBags); // what do you expect this to do?
}
"链接"涉及调用不同的构造函数,而不仅仅是重新调用相同的构造函数(这将无限重新调用自身(。 因此,例如,您可以使用默认参数调用第一个构造函数:
passenger(int freeBags){
this(0, freeBags, 0.0d);
}
因此,最终您将拥有一个执行实际构造逻辑的"主要"构造函数,而重载的构造函数是该构造函数的传递。