Java中对象的初始化过程

来源:互联网 发布:芜湖神淘宝店 编辑:程序博客网 时间:2024/05/22 06:48
class Parent{//静态代码块儿,随着类的加载而执行,而且只执行一次,用于给类进行初始化static{System.out.println("parent static code run-->父类静态代码块儿运行");}//构造代码块儿,给所有对象进行初始化,创建一个对象调用一次{System.out.println("parent construction code run-->父类构造代码块儿运行");}//构造函数,给对象进行针对性地初始化Parent(){super();//调用Object的空参数的构造函数,不写也隐示含有super()语句//成员变量显示初始化,Parent类中没有成员变量,跳过此步//构造代码块儿初始化System.out.println("parent constructor run-->父类构造函数运行");show();//调用Children中的show()方法}//被Children中的show()方法覆盖void show(){System.out.println("parent show run-->父类show方法运行");}}class Children extends Parent{//成员变量int num=1;//静态代码块儿,随着类的加载而执行,而且只执行一次,用于给类进行初始化static{System.out.println("children static code run-->子类静态代码块儿运行");}//构造代码块儿,给所有对象进行初始化,创建一个对象调用一次{System.out.println("children construction code run-->子类构造代码块儿运行.......num="+num);num=2;}//构造函数,给对象进行针对性地初始化Children(){super();//调用Parent空参数的构造函数,不写也隐示还有super()语句//成员变量显示初始化,num由0变为1//构造代码块儿初始化,num由1变为2System.out.println("children constructor run-->子类构造函数运行.......num="+num);num=3;//构造函数初始化,num由2变为3}//覆盖Parent中的show()方法void show(){System.out.println("children show run-->子类show方法运行.......num="+num);}}public class ObjectInstanceProcess{public static void main(String[] args){Children c=new Children();c.show();}}/*运行结果:parent static code run-->父类静态代码块儿运行children static code run-->子类静态代码块儿运行parent construction code run-->父类构造代码块儿运行parent constructor run-->父类构造函数运行children show run-->子类show方法运行.......num=0children construction code run-->子类构造代码块儿运行.......num=1children constructor run-->子类构造函数运行.......num=2children show run-->子类show方法运行.......num=3*/

0 0