Java 构造函数分为无参构造和有参构造,不写系统默认给定一个无参构造函数。
创建一个对象,依次执行 父类静态代码块---子类静态代码块----父类非静态代码块----父类构造函数----子类非静态代码块----子类构造函数,即在执行子类的构造函数之前,一定会先执行父类的构造函数(究其原因,是父类都不能构造,更何况子类,但是执行父类的构造函数,并没有创建父类的对象)。
一、显式调用和隐式调用
1.父类如果只有无参构造函数,则子类的无参构造函数/有参构造函数均 无需显示调用父类构造函数,系统会隐式的在子类的第一行织入父类的构造函数。
2.父类只有有参构造函数,则代表重写了构造函数,这时候,子类也将重写构造函数,即子类没有无参构造,只能有参构造,并且在子类的有参构造的第一行,需显示调用父类的有参构造,即super(x)。
二、this和super
super用于显式调用父类的构造函数,this可用于显式调用本类的另一个重载构造函数。系统会根据传入super或者this的参数来判断该调用哪个构造函数。