探秘Java类加载

Java是一门面向对象的编程语言。

面向对象以抽象为基础,有封装、继承、多态三大特性。

宇宙万物,经过抽象,均可归入相应的种类。不同种类之间,有着相对井然的分别。

Java中的类,便是基于现实世界中的类别抽象出来的。

类本身表示一类事物,是对这类事物共性的抽象与封装。类封装了一类事物的属性和方法。

类与类之间,有着不同的层级。

以生物界中的分类为例,遵循“界门纲目科属种”的级别体系,人类(亦可称为“人种”)的层级体系是:动物界---脊索动物门---哺乳纲---灵长目---人科---人属---人种。

从人种到动物界,依次继承父类的共有属性和方法,而且又独具形态。

举例来说,动物都需要吃东西来维持生命所需的能量,同是吃东西,不同种类的动物各有特点。

又譬如,动物界与植物界的一个关键区别是,能否移动。在动物界之中,都是移动,但是各子类的移动方式几乎互不相同。

举例来说,人通过走路、奔跑、攀爬等来移动,鸟通过飞翔、两下肢等来移动,鱼则通过在水中漂游来移动等。这使得动物的移动功能丰富多彩。

不仅如此,即便属于同一种类的个体,在表现出来的公有功能方面,也是各不相同。

譬如,虽然同为人类,普遍具备说话的功能,但是每个具体的个人在说话时,音色又各自不同。

我们生活的世界,就是这样丰富多彩。既有共性的东西,又有具体不同的风格。

Java语言源于为解决现实世界中各种各样应用问题提供一整套解决方案。

所以,我们生活的现实世界,乃至整个宇宙,深深地映射入Java语言中。

世界与宇宙何其深邃与复杂,同样,Java的博大精深不言而喻。

可以说,每个Java程序的运行,都是为了解决某个或某种应用问题而生。

古人说“格物致知”,我们探秘Java程序运行的内在原理,有助于帮助我们深入认识Java世界的运行机制。

每个Java程序,都离不开类和对象。

所以,我们就从类加载说起。

一、类的生命周期

想象一下,你在Eclipse里写了一个Java程序,通过javac(Java编译期),将Java源代码编译为.class字节码文件。

字节码文件静静地躺在你的电脑磁盘里,你要运行这个Java程序,就要去运行编译后的字节码文件。

加载.class字节码文件到内存,形成供JVM使用的类,并到这个类从JVM中销毁,这便是类的生命周期。

总的来说,类的生命周期经过了如图所示的阶段:

二、双亲委派

三、自定义类加载器

四、深入讲解反射

五、对象的生命周期

猜你喜欢

转载自www.cnblogs.com/lizhangyong/p/10002756.html