java内部类和外部类、子类和父类的加载顺序
1.成员内部类实创建对象
1.先加载外部类的静态代码块(按照上下顺序)
2.加载外部类的构造方法
3.加载内部类的构造方法
public class OuterClass {
static {
System.out.println("外部类静态代码块1");
}
public OuterClass() {
System.out.println("外部类构造方法");
}
public class InnerClassOne{
public InnerClassOne() {
System.out.println("内部类构造方法");
}
}
static {
System.out.println("外部类静态代码块2");
}
}
public class ForTest {
public static void main(String[] args) {
OuterClass.InnerClassOne innerTest = new OuterClass(). new InnerClassOne();
}
}
执行结果
2.静态内部类创建对象
不会加载外部类的静态代码块,不会调用外部类的构造方法
public class OuterClass{
static {
System.out.println("外部类静态代码块1");
}
public static class InnerStaticClass{
public InnerStaticClass() {
System.out.println("静态内部构造方法");
}
static {
System.out.println("静态内部类的静态代码块");
}
}
static {
System.out.println("外部类静态代码块2");
}
}
public class ForTest {
public static void main(String[] args) {
OuterClass.InnerStaticClass staticTest = new OuterClass.InnerStaticClass();
}
}
执行结果