为什么我在构造函数链接时收到此错误



我收到错误"错误:递归构造函数调用",这似乎与没有使用参数初始化的构造函数有关,并且仅使用 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);
}

因此,最终您将拥有一个执行实际构造逻辑的"主要"构造函数,而重载的构造函数是该构造函数的传递。

最新更新