代码如下:
/**
* 父类
*/
public class F {
// 父类的无参构造方法
public F() {
System.out.println("这是父类的构造方法!");
}
// 代码块
{
System.out.println("这是父类的代码块!");
}
// 静态代码块
static {
System.out.println("这是父类的静态代码块!");
}
}
/**
* 子类
*/
public class S extends F {
// 子类的无参构造方法
public S() {
System.out.println("这是子类的构造方法!");
}
// 子类的代码块
{
System.out.println("这是子类的代码块!");
}
// 子类的静态代码块
static {
System.out.println("这是子类的静态代码块!");
}
public static void main(String[] args) {
S s = new S();
}
}
输出:
这是父类的静态代码块!
这是子类的静态代码块!
这是父类的代码块!
这是父类的构造方法!
这是子类的代码块!
这是子类的构造方法!
由上面的代码可以说明:当子类继承父类时,输出时,会先去运行父类的静态代码块,然后回去运行子类的静态代码块,再运行父类的代码块、构造方法,接着才会去运行子类的代码块、构造方法。