最好在其自己的构造函数中初始化超类的字段,并在子类中委托给该构造函数。 如果它在构造后没有改变,这还将允许声明一个字段 final
。
示例:
class Super {
int x;
}
class Sub extends Super {
Sub(int _x) {
// 警告:x 在超类中声明
x = _x;
}
}
要避免此问题,请声明一个超类构造函数:
class Super {
final int x;
Super(int _x) {
x = _x;
}
}
class Sub extends Super {
Sub(int _x) {
super(_x);
}
}