public class Student extends Person{
static{System.out.println("我是子类静态代码块");}
{System.out.println("我是子类普通代码块");}
Student(){System.out.println("我是子类无参构造方法");}
static void test(){}
}
public class Person {
static{System.out.println("我是父类静态代码块");}
{System.out.println("我是父类普通代码块");}
Person(){System.out.println("我是父类无参构造方法");}
}
执行顺序:
a.如果调用了静态的成员变量或成员方法(类加载),则执行顺序如下:
public class Entrance {
public static void main(String[] args) {
Student.test();
Student.test(); //类只能加载一次
}
}
D:\Java\bin\java.exe "-javaagent:D:\Jetrains\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=52120:D:\Jetrains\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\BabyLu\Desktop\学习\java\untitled1\out\production\untitled1 Entrance
我是父类静态代码块
我是子类静态代码块
进程已结束,退出代码为 0
b.实例化过程,则执行顺序如下:
public class Entrance {
public static void main(String[] args) {
Student st=new Student();
}
}
D:\Java\bin\java.exe "-javaagent:D:\Jetrains\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=52323:D:\Jetrains\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\BabyLu\Desktop\学习\java\untitled1\out\production\untitled1 Entrance
我是父类静态代码块
我是子类静态代码块
我是父类普通代码块
我是父类无参构造方法
我是子类普通代码块
我是子类无参构造方法
进程已结束,退出代码为 0
注:类只能被加载一次
public class Entrance {
public static void main(String[] args) {
Student st=new Student();
Student st1=new Student();
}
}
D:\Java\bin\java.exe "-javaagent:D:\Jetrains\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=52419:D:\Jetrains\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\BabyLu\Desktop\学习\java\untitled1\out\production\untitled1 Entrance 我是父类静态代码块 我是子类静态代码块 我是父类普通代码块 我是父类无参构造方法 我是子类普通代码块 我是子类无参构造方法 我是父类普通代码块 我是父类无参构造方法 我是子类普通代码块 我是子类无参构造方法 进程已结束,退出代码为 0