本帖最后由 李新辉 于 2013-11-4 15:34 编辑
对象的初始化过程遵循以下的规律: 1、 如果存在继承关系,就先父类后子类; 2 、如果在类内有静态变量和静态块,就先静态后非静态,最后才是构造函数; 3 、继承关系中,必须要父类初始化完成后,才初始化子类。 -------------------------------------------- 类的加载: 当在cmd操作台调用java命令执行文件的时候,虚拟机先从main函数读起(主函数为静态),然后装载器(loader)就会寻找和main同名的class文件 class类文件就被加载进内存方法区 如果有继承,就先加载父类,还有父类的父类,这个时候还没有对象的存在(注意类文件在加载时,同样遵循先父类后子类)
加载类文件的同时执行类文件中的静态代码块对类进行初始化, 类初始化顺序遵循从先父类后子类,本类内部从上往下。因为子类的初始化有可能会用到父类的静态成员,这个顺序很重要
这个时候类就加载并初始化完毕,下一步就该建立对象了 ----------------------------------- 对象的建立:(对象初始化时先父类后子类,类内部是从上往下,顺序很重要)
然后就在内存中为父类开辟空间 并进行默认初始化 接着就在内存中为子类开辟空间 并进行默认初始化
默认初始化完成后, 从父类开始显示初始化并执行非静态方法块和构造函数, 然后再子类开始显示初始化并执行非静态方法块和构造函数。
当数据都建立完毕,对象就初始化完成了
对象就是来封装数据的,java里数据只有被封装在了对象里,才能为我们所用……
万物皆对象……
|