Java 构造函数分为无参构造和有参构造,不写系统默认给定一个无参构造函数。

创建一个对象,依次执行 父类静态代码块---子类静态代码块----父类非静态代码块----父类构造函数----子类非静态代码块----子类构造函数,即在执行子类的构造函数之前,一定会先执行父类的构造函数(究其原因,是父类都不能构造,更何况子类,但是执行父类的构造函数,并没有创建父类的对象)。

 

一、显式调用和隐式调用

1.父类如果只有无参构造函数,则子类的无参构造函数/有参构造函数均  无需显示调用父类构造函数,系统会隐式的在子类的第一行织入父类的构造函数。

2.父类只有有参构造函数,则代表重写了构造函数,这时候,子类也将重写构造函数,即子类没有无参构造,只能有参构造,并且在子类的有参构造的第一行,需显示调用父类的有参构造,即super(x)。

 

二、this和super

super用于显式调用父类的构造函数,this可用于显式调用本类的另一个重载构造函数。系统会根据传入super或者this的参数来判断该调用哪个构造函数。