我有一个构造函数
private Double mA;
private Double mB;
Foo(Double a) {
mA = a;
mB = a + 10;
}
Foo(Double a, Double b) {
mA = a;
mB = b;
// some logic here
}
如果我像这样调用第二个构造函数:
Foo(Double a) {
Double b = a + 10;
this(a, b);
}
编译器告诉我,构造函数应该是第一个语句。那么我是否需要将所有逻辑从第二个构造函数复制到第一个构造函数?
你为什么不这样做this(a, a+10)
反而?
注意this()
or super()
必须是构造函数中的第一个语句(如果存在)。但是,您仍然可以在论证中进行逻辑推理。如果需要执行复杂的逻辑,可以通过在参数中调用类方法来完成:
static double calculateArgument(double val) {
return val + 10; // or some really complex logic
}
Foo(double a) {
this(a, calculateArgument(a));
}
Foo(double a, double b) {
mA = a;
mB = b;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)