我有
class A {
int var;
public A(int x) {
var = x;
}
}
class B extends A {
int var2;
public B(int x, int y) {
super(...);
var2 = y;
x = f(y);
}
}
对于子类 B,我需要计算在 A 的构造函数中使用的值 x。如果我可以自由移动super
到 my 之下,x=f(y)
那么我可以将结果传递给 A(超级)的构造函数。但是 super 必须是 B 的构造函数的第一行。
有什么方法可以第一次用正确的值初始化 A 吗?如果 A.var 是最终的并且我无法在构建后返回并更改它怎么办?
当然,我可以提出super(f(y))
,但我可以想象这会变得困难的情况。