java中的实例变量创建

noo*_*ook 2 java inheritance instance-variables hierarchy

如果我有以下情况:

public class Foo extends Baz{
  private String banana = "banana";
  //blah blah blah
}


public class Baz{
  protected static String apple = "apple"; 
}
Run Code Online (Sandbox Code Playgroud)

哪个先创建,苹果还是香蕉?我想说苹果首先被创造,但我不确定.

nic*_*ild 8

apple首先创建.它是静态的,并且在父级别类中.

静态初始化程序(初始化apple变量)将在Baz加载类时立即运行,这必须在Baz可以创建实例之前发生.

banana一旦Foo创建了一个实例,intsance初始化器(初始化变量)就会运行.