类的加载
- 类的代码在初次使用时才加载,这通常是指加载发生于创建类的第一个对象之时。
- 当访问static域或static方法时,也会发生加载。
继承与初始化
- 在ClassName上运行Java时,所发生的第一件事情就是试图方法ClassName.main()(一个static方法),于是加载器开始启动并找出ClassName类的编译代码(在名为ClassName.class的文件之中)。
- 在对它进行加载的过程中,编译器注意到它有一个基类(这是由关键字extends得知的),于是它继续进行加载。如果该基类还有其自身的基类,那么第二个基类就会被加载,如此类推。
- 接下来,根基类中的static初始化即会被执行,然后是下一个导出类,以此类推。这种方式很重要,因为导出类的static初始化可能会依赖于基类成员能否被正确初始化。
- 到此为止,必要的类都已加载完毕,对象就可以被创建了。
- 首先,对象中所有的基本类型都会被设为默认值,对象引用被设为null,这是通过将对象内存设为二进制零值而一举生成的。
- 然后,基类的构造器会被调用。基类构造器和导出类的构造器一样,以相同的顺序来经历相同的过程。在基类构造器完成之后,实例变量按其次序被初始化。最后,构造器的其余部分被执行。
网友评论