【发布时间】:2013-12-11 15:52:25
【问题描述】:
有人可以向我解释一下这个例子的行为吗:
package test;
public class Test {
static abstract class Parent{
public Parent() {
print();
}
public abstract void print();
}
static class Child extends Parent{
protected final int i= 10;
public Child() {
super();
}
public void print(){
System.out.println(i);
}
}
public static void main(String[] args) {
System.out.println("Test");
new Child();
}
}
这个 sn-p 的输出是 10。但是当我将变量 i 更改为任何对象时,例如 Integer,输出为 null。但是当我将 i 更改为 static Integer 时,输出是 10 正如预期的那样。
我认为在调用任何方法(或构造函数)之前初始化字段,但这里这种方法只适用于原始类型而不是对象。
谢谢
萝卜
【问题讨论】:
-
了解类实例化期间的操作顺序..
标签: java initialization field