nic*_*tch 10 java inheritance abstract
我无法理解为什么私有变量为null,即使它是内联初始化的.这是我的代码片段:
public abstract class A {
public A() {
initialize();
}
protected abstract void initializeLayout();
protected void initialize() {
// Do something
initializeLayout();
}
}
public abstract class B extends A {
private final Object myVariable = new Object();
@Override
protected void initializeLayout() {
// Do something with myVariable
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,当这段代码到达B.initailizeLayout时,myVariable为NULL.我认为内联字段在其他所有内容之前都已初始化,甚至在构造函数之前.我错了什么?
Era*_*ran 19
超类A的构造(其中要求initialize()它调用B的initializeLayout()子类B的实例变量被初始化之前被执行).因此,您的实例变量myVariable在那时仍为空.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |