public class MyTest1 {
public static void main(String[] args) {
System.out.println(Mychild1.str);
}
}
class MyParent1{
public static String str ="hello";
static {
System.out.println("my parent1 static block");
}
}
class Mychild1 extends MyParent1{
public static String str2="welcome";
static {
System.out.println("mychild1 static block");
}
}
运行结果
``
my parent1 static block
hello
``
对于静态字段来说,只有直接定义了该字段的类才会被初始化
并没有主动使用mychild1
public class MyTest1 {
public static void main(String[] args) {
System.out.println(Mychild1.str2);
}
}
class MyParent1{
public static String str ="hello";
static {
System.out.println("my parent1 static block");
}
}
class Mychild1 extends MyParent1{
public static String str2="welcome";
static {
System.out.println("mychild1 static block");
}
}
my parent1 static block
mychild1 static block
welcome
初始化一个子类的时候 他的父类也会被使用
mychild1的主动使用,mychild的父类先使用
当一个类在初始化,要求其父类全部都已经初始化完毕了。