Java类加载

package com.chenming.test;

public class ExaminationDemo {
	public static void main(String[] args) {
		System.out.println("Class Loading:");
		new D();
	}
}

class E {
	E() {
		System.out.println("E构造方法");
	}

	public void methodE() {
		System.out.println("E的普通方法");
	}
}

class F {
	F() {
		System.out.println("F构造方法");
	}

	public void methodF() {
		System.out.println("F普通方法");
	}
}

class B {
	E e = new E();
	static F f = new F();
	public String strB = getStrB();
	static {
		System.out.println("B静态代码块");
		f.methodF();
	}
	{
		System.out.println("B匿名代码块");
	}

	B() {
		System.out.println("B构造方法");
		e.methodE();
	}

	private String getStrB() {
		System.out.println("初始化B的实例成员变量");
		return "strB";
	}
}

class C extends B {
	static {
		System.out.println("C静态代码块");
	}
	{
		System.out.println("C匿名代码块");
	}

	C() {
		System.out.println("C构造方法");
	}
}

class D extends C {
	public String strD = getStrD();
	public static String strD1 = getStrD1();
	static {
		System.out.println("D静态代码块");
	}
	{
		System.out.println("D匿名代码块");
	}

	D() {
		System.out.println("D构造方法");
	}

	public String getStrD() {
		System.out.println("实例化D的普通变量");
		return "strD";
	}

	public static String getStrD1() {
		System.out.println("实例化D的静态变量");
		return "strD1";
	}
}

Class Loading:
F构造方法
B静态代码块
F普通方法
C静态代码块
实例化D的静态变量
D静态代码块
E构造方法
初始化B的实例成员变量
B匿名代码块
B构造方法
E的普通方法
C匿名代码块
C构造方法
实例化D的普通变量
D匿名代码块
D构造方法

Java类加载小结:
          父类>子类
          静态>普通
          静态实例变量>静态代码块
          实例成员变量>匿名代码块>构造方法
          

          父类静态实例变量-->父类静态代码块-->子类静态实例变量-->子类静态代码块--> 父类一般实例变量

-->父类匿名代码块-->父类构造方法-->子类实例变量-->子类匿名代码块-->子类构造方法。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值