Java类和方法的加载顺序

package com.superx.hello;

public class demo1 {
public static void main(String[] args) {
A a1 = new B();
System.out.println("------");
a1 = new B();
}
}

class A {
private static int numA;
private int numA2;

static {
System.out.println("A的静态字段 : " + numA);
System.out.println("A的静态代码块");
}

{
System.out.println("A的成员变量 : " + numA2);
System.out.println("A的非静态代码块");
}

public A() {
System.out.println("A的构造器");
}
}

class B extends A {
private static int numB;
private int numB2;

static {
System.out.println("B的静态字段 : " + numB);
System.out.println("B的静态代码块");
}

{
System.out.println("B的成员变量 : " + numB2);
System.out.println("B的非静态代码块");
}

public B() {
System.out.println("B的构造器");
}
}





结果:

A的静态字段 : 0
A的静态代码块
B的静态字段 : 0
B的静态代码块
A的成员变量  : 0
A的非静态代码块
A的构造器
B的成员变量 : 0
B的非静态代码块
B的构造器
------
A的成员变量  : 0
A的非静态代码块
A的构造器
B的成员变量 : 0
B的非静态代码块
B的构造器

父类的静态字段——>父类静态代码块——>子类静态字段——>子类静态代码块——>父类成员变量(非静态字段)

——>父类非静态代码块——>父类构造器——>子类成员变量——>子类非静态代码块——>子类构造器

学习 圣斗士Morty  原文连接

猜你喜欢

转载自www.cnblogs.com/super-x/p/12701193.html