父类:
package com.Test;
public class StaticExtends {
//静态代码块
static{
System.out.println("父类静态代码块");
}
//构造代码块
{
System.out.println("父类构造代码块");
}
//构造函数
public StaticExtends(){
System.out.println("父类构造函数");
}
}
子类:
package com.Test;
public class SonExtends extends StaticExtends{
//静态代码块
static{
System.out.println("子类静态代码块");
}
//构造代码块
{
System.out.println("子类构造代码块");
}
//构造函数
public SonExtends(){
System.out.println("子类构造函数");
}
public static void main(String[] args) {
//当子类的main方式什么也不写时将打印
//父类静态代码块
//子类静态代码块
//SonExtends son=new SonExtends();
//当子类new出对象后,
// 父类静态代码块
// 子类静态代码块
// 父类构造代码块
// 父类构造函数
// 子类构造代码块
// 子类构造函数
}
}
因为被static修饰后,即是属于类的,对象创建与否将不妨碍其执行,而构造代码块与构造函数都是依赖于对象的,
执行顺序:父类静态代码块,子类静态代码块,父类构造代码块,父类构造函数,,子类构造代码块,子类构造函数