Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java 类与对象的初始化

面试的时候,经常会遇到这样的笔试题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和静态块,它们只包含一些简单的输出字符串到控制台的代码,然后让我们写出正确的输出结果。这实际上是在考察我们对于类的初始化知识的了解。首先,我们先看看下面的代码,这就是很经典的考察方式。public class InitField {public static void main(String[] args) {SuperInitField p = new SuperInitField();SuperInitField c = new SubInitField();}}class SuperInitField {public SuperInitField() {System.out.println("parent");}static {System.out.println("static parent");}}class SubInitField extends SuperInitField {public SubInitField() {System.out.println("child");}static {System.out.println("static child");}}不管你是否能很快速的写出正确的答案,我们先把这个程序放一边,了解一下Java虚拟机初始化的原理。JVM通过加装、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。类型的生命周期如下图所示:
装载和连接必须在初始化之前就要完成。