public class Parent {
static{
System.out.println("执行父类静态代码段");
}
{
System.out.println("执行父类普通代码段");
}
public Parent(){
System.out.println("执行父类构造器");
}
public static void pMethod(){
System.out.println("执行父类静态方法");
}
}
public class Child extends Parent {
static{
System.out.println("执行子类静态代码段");
}
{
System.out.println("执行子类普通代码段");
}
public Child(){
System.out.println("执行子类构造器");
}
public static void pMethod(){
System.out.println("执行子类静态方法");
}
}
public class Test{
public static void main(String[] args){
Parent obj = new Child();
obj.pMethod();
}
}
第1行:执行父类静态代码段
第2行:执行子类静态代码段
第3行:执行父类普通代码段
第4行:执行父类构造器
第5行:执行子类普通代码段
第6行:执行子类构造器
第7行:执行父类静态方法
普通代码段里的变量的作用域只限于作用于以内;
普通代码段是在创建对象实例的时候初始化的。
例子:如果仅仅执行代码Child.pMethod();,那么结果应该是
执行父类静态代码段
执行子类静态代码段
执行子类静态方法
一旦类被调用,不管是静态方法调用还是实例方法调用,静态代码段始终都会创建的。而且是首先被创建!