【发布时间】:2018-09-01 04:41:08
【问题描述】:
考虑这个类:
public class Passenger {
public Passenger() {
}
public Passenger(int freeBags) {
this(freeBags > 1 ? 25.0d : 50.0d);
this.freeBags = freeBags;
}
public Passenger(int freeBags, int checkedBags) {
this(freeBags);
this.checkedBags = checkedBags;
}
private Passenger(double perBagFee) {
this.perBagFee = this.perBagFee;
}
}
Passenger fred = new Passenger(2);
如果我理解正确,“fred”是Passenger 的一个新实例。 'fred' 用一个参数public Passgener(int freeBags) 调用构造函数。然后这条线this(freeBags > 1 ? 25.0d : 50.0d) 被调用。
这是我的问题:编译器如何知道第一个构造函数中的条件语句链接到“私有”构造函数?我的猜测是条件语句中的“d”指向私有构造函数中的双参数。但是如果有另一个带有双参数的构造函数呢?它会链接到什么?在第一个构造函数中没有提到perBagFee。我有点困惑。
【问题讨论】:
-
但是如果有另一个带有双参数的构造函数呢? 试试看。为了节省你一分钟,那将是一个编译时错误(除非它有不同的签名)。
标签: java parameters constructor visibility chaining