六、通过子类调用父类的静态变量或者静态方法,那么表示为对父类的主动使用,而不是子类的主动使用。代码如下
public class MyTest11 {
public static void main(String[] args) {
System.out.println(MyChild11.a);
MyChild11.success();
}
}
class MyParent11 {
public static int a = 5;
static{
System.out.println("MyParent11 loading");
}
static void success(){
System.out.println("MyParent11 success");
}
}
class MyChild11 extends MyParent11{
public static int b = 4;
static{
System.out.println("MyChild11 loading");
}
}
结果:
MyParent11 loading
5
MyParent11 success
说明:
* 通过子类调用父类的静态变量或者静态方法,那么表示为对父类的主动使用,而不是子类的主动使用
* 静态变量或者静态方法定义在谁身上就表示对谁的主动使用,而不看调用方,所以子类并不会被初始化