类初始化:
* 类会在以下情况初始化:创建实例、该类中main方法被加载。
* 类初始化会调用<clinit>方法,该方法首先加载静态变量和静态代码块,按顺序执行。
*类初始化的时候有父类会先初始化父类在初始化子类,有父亲才有儿子。
*<clinit>方法只执行一次。
实例初始化:
*调用new方法开始实例初始化
*实例初始化调用<init>方法,有几个构造器方法就会有几个<init>方法
*<init>方法执行内容:非静态变量和非静态代码块 按顺序执行,然后执行构造器方法
*<init>方法首行是super()方法,即先执行父类的非静态变量和非静态代码块,然后是父类的构造器方法
注意:注意方法的重写,非静态方法,调用前默认有一个this ,this指的是当前创建的对象,所以创建子类实例的时候<init>方法中首行执行super()方法,调用非静态方法,如果方法被子类重写了,实际调用的是子类重写后的方法。
例题代码如图:
运行结果为:
(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)
(9)(3)(2)(9)(8)(7)