在创建java对象时,程序会依次调用每个父类的非静态初始化块、构造器。然后才调用本类的非静态初始化块。
显示调用与隐式调用
上诉第一个调用方式为隐式调用,而父类的静态初始化块总会被执行,接着会调用父类的一个或多个构造器执行初始化,这个调用既可以是隐式的也可以是显示调用,通过super();
1.子类构造器执行体内第一行代码使用super显式调用父类构造器,系统根据传入的参数列表决定调用父类的哪个构造器。
2.子类构造器执行体内第一行代码使用this显示调用本类中重载的构造器,系统将根据参数列表调用本类的另一个构造器。
3.子类构造器中既没有super也没有this,则隐式调用父类的无参数构造器。
只在构造器第一行有用,及super与this只能执行一个。