Java是一门面向对象的编程语言。
面向对象以抽象为基础,有封装、继承、多态三大特性。
宇宙万物,经过抽象,均可归入相应的种类。不同种类之间,有着相对井然的分别。
Java中的类,便是基于现实世界中的类别抽象出来的。
类本身表示一类事物,是对这类事物共性的抽象与封装。类封装了一类事物的属性和方法。
类与类之间,有着不同的层级。
以生物界中的分类为例,遵循“界门纲目科属种”的级别体系,人类(亦可称为“人种”)的层级体系是:动物界---脊索动物门---哺乳纲---灵长目---人科---人属---人种。
从人种到动物界,依次继承父类的共有属性和方法,而且又独具形态。
举例来说,动物都需要吃东西来维持生命所需的能量,同是吃东西,不同种类的动物各有特点。
又譬如,动物界与植物界的一个关键区别是,能否移动。在动物界之中,都是移动,但是各子类的移动方式几乎互不相同。
举例来说,人通过走路、奔跑、攀爬等来移动,鸟通过飞翔、两下肢等来移动,鱼则通过在水中漂游来移动等。这使得动物的移动功能丰富多彩。
不仅如此,即便属于同一种类的个体,在表现出来的公有功能方面,也是各不相同。
譬如,虽然同为人类,普遍具备说话的功能,但是每个具体的个人在说话时,音色又各自不同。
我们生活的世界,就是这样丰富多彩。既有共性的东西,又有具体不同的风格。
Java语言源于为解决现实世界中各种各样应用问题提供一整套解决方案。
所以,我们生活的现实世界,乃至整个宇宙,深深地映射入Java语言中。
世界与宇宙何其深邃与复杂,同样,Java的博大精深不言而喻。
可以说,每个Java程序的运行,都是为了解决某个或某种应用问题而生。
古人说“格物致知”,我们探秘Java程序运行的内在原理,有助于帮助我们深入认识Java世界的运行机制。
每个Java程序,都离不开类和对象。
所以,我们就从类加载说起。
一、类的生命周期
想象一下,你在Eclipse里写了一个Java程序,通过javac(Java编译期),将Java源代码编译为.class字节码文件。
字节码文件静静地躺在你的电脑磁盘里,你要运行这个Java程序,就要去运行编译后的字节码文件。
加载.class字节码文件到内存,形成供JVM使用的类,并到这个类从JVM中销毁,这便是类的生命周期。
总的来说,类的生命周期经过了如图所示的阶段:
二、双亲委派
三、自定义类加载器
四、深入讲解反射
五、对象的生命周期