之前看到过,后来有点模糊了就写篇记录一下。
package com.java.text;
public class Father {
static {
System.out.println("父类--静态代码块");
}
public Father() {
System.out.println("父类--构造函数");
}
{
System.out.println("父类--非静态代码块");
}
public static void main(String[] args) {
new Son();
}
}
class Son extends Father {
static {
System.out.println("子类--静态代码块");
}
{
System.out.println("子类--非静态代码块");
}
public Son() {
System.out.println("子类--构造函数");
}
}
运行结果:
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
这个顺序呢应该很清楚了,有很明显的优先级。
一个类里面:静态代码块>非静态代码块>构造函数。
静态代码块先于非静态代码块 ,父类代码先于子类代码——子类静态代码块>父类非静态代码块(ps:因为静态代码块的优先程度太高了)