类初始化和实例初始化过程

类初始化过程
①,一个类要创建实例需要先加载并初始化该类
--》main方法所在的类需要先加载和初始化
②,一个子类要初始化需要先初始化父类
③,一个类初始化就是执行<clinit>() 方法
--》<clinit>() 由静态类变量赋值代码和静态代码块组成
--》静态类变量赋值代码和静态代码块从上往下执行
--》<clinit>() 方法只执行一次


实例初始化过程
①,实例初始化就是执行<init>()方法
--》<init>()方法可能重载有多个,有几个构造器就有几个<init>()方法
--》<init>()方法是由非静态实例变量显式赋值代码和非静态代码块,对应构造器代码组成
--》非静态实例变量显式赋值代码和非静态代码块从上往下执行,而对应构造器方法最后执行
--》每次创建实例对象,调用对应构造器,执行的就是对应的<init>()方法
--》<init>方法的首行是super(),即对应父类空参的<init>方法

非静态方法前面其实有一个默认的对象this
this 在构造器(或<init>)它表示的是正在创建的对象,当子类在实例化时
父类的实例方法前面的this就是子类对象

猜你喜欢

转载自www.cnblogs.com/dongma/p/9902096.html
今日推荐