package com.test.load;
public class ClassLoad {
static {
System.out.println("父类静态代码快");
}
{
System.out.println("父类非静态");
}
public static void printtest(){
System.out.println("父类静态方法");
}
public ClassLoad(){
System.out.println("父类构造函数");
}
}
package com.test.load;
public class ClassLoadTest extends ClassLoad {
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类非静态代码块");
}
public static void printlntest(){
System.out.println("子类静态方法");
}
public ClassLoadTest (){
System.out.println("子类构造方法");
}
public static void main(String [] args){
new ClassLoadTest();
}
}
运行结果:
父类静态代码快
子类静态代码块
父类非静态
父类构造函数
子类非静态代码块
子类构造方法
结论:静态代码块在项目启动时就已经初始化,而非静态代码块在类初始化的时候优先于构造方法先执行。静态方法只能用类的对象调用才能执行。