类的加载顺序
代码块:
1.静态代码块
声明在一个类的方法外,用static修饰
类加载的时候会被加载,且只在类被加载的时候加载一次
2.成员代码块
也是声明在类中,方法外的代码块
类被加载的时候不会自动加载
只有在类的实例化被创建的时候才会被加载
一般用来执行初始化操作
3.局部代码块
写在方法内部的代码块
一般用来声明方法内部的变量,减少变量的生命周期
提高内存的使用率
public class Test16 {
public static void main(String[] args) {
Son1 s = new Son1();
}
}
class Father1{
static{
System.out.println("父类的静态方法快");
}
{
System.out.println("父类的成员方法快");
}
public Father1(){
{
System.out.println("父类的局部方法快");
}
System.out.println("父类的构造器");
}
}
class Son1 extends Father1{
static{
System.out.println("子类的静态方法快");
}
{
System.out.println("子类的成员方法快");
}
public Son1(){
{
System.out.println("子类的局部方法快");
}
System.out.println("子类的构造器");
}
}
创建子类对象时,首先会加载父类,父类加载的时候就会加载static修饰的静态代码块,之后加载子类会执行子类中的静态代码块,之后会加载父类的构造器,加载构造器之前会先执行成员代码块进行初始化操作,之后再执行构造器中的代码,然后执行子类的构造器