package startClass;
class D {
public D() {
System.out.println("子类静态 成员 \t 3");
}
}
class DD {
public DD() {
System.out.println("父类静态 成员\t 2");
}
}
class CC {
public CC() {
System.out.println("父类非静态 成员 \t 6");
}
}
class C {
public C() {
System.out.println("子类非静态 成员 \t 8");
}
}
class Fu {
static {
System.out.println("FU 静态代码块\t 1");
}
{
System.out.println("Fu 构造代码块 \t 5");
}
CC cc = new CC();
static DD dd = new DD();
public Fu() {
System.out.println("FU构造方法 \t 7");
}
}
class Zi extends Fu {
C c = new C();
static D d = new D();
static {
System.out.println("Zi 静态代码块 \t 4");
}
public Zi() {
System.out.println("Zi构造方法 \t 10");
}
{
System.out.println("Zi 构造代码块 \t 9");
}
}
public class Jiazai {
public static void main(String[] args) {
new Zi();
}
class D {
public D() {
System.out.println("子类静态 成员 \t 3");
}
}
class DD {
public DD() {
System.out.println("父类静态 成员\t 2");
}
}
class CC {
public CC() {
System.out.println("父类非静态 成员 \t 6");
}
}
class C {
public C() {
System.out.println("子类非静态 成员 \t 8");
}
}
class Fu {
static {
System.out.println("FU 静态代码块\t 1");
}
{
System.out.println("Fu 构造代码块 \t 5");
}
CC cc = new CC();
static DD dd = new DD();
public Fu() {
System.out.println("FU构造方法 \t 7");
}
}
class Zi extends Fu {
C c = new C();
static D d = new D();
static {
System.out.println("Zi 静态代码块 \t 4");
}
public Zi() {
System.out.println("Zi构造方法 \t 10");
}
{
System.out.println("Zi 构造代码块 \t 9");
}
}
public class Jiazai {
public static void main(String[] args) {
new Zi();
}
}
本文通过一个具体的Java类加载示例,详细展示了类加载过程中不同构造块的执行顺序,包括静态代码块、构造代码块及构造方法等。有助于理解Java程序初始化时的执行流程。
1693

被折叠的 条评论
为什么被折叠?



