*调用父类的构造方法
子类不会继承父类的构造方法,但有的时候子类构造方法里需要调用父类构造方法的初始化代码。
Eg
class BaseClass
{
protected double size;
public BaseClass()
{
size=0;
System.out.println("Base类无参构造");
}
public BaseClass(double s)
{
size=s;
System.out.println("Base类有参构造");
}
}
public classSubClass extends BaseClass
{
private String color;
public SubClass()
{
color="blue";
System.out.println("Sub类无参构造");
}
public SubClass(String c,double d)
{
super(d);
color=c;
System.out.println("Sub类有参构造");
}
public static void main(String[] args)
{
SubClass sc1=new SubClass();
SubClass sc2=newSubClass("red",0);
}
}
当通过子类构造方法创建子类对象时,默认的先执行父类不含参数的构造方法,再执行子类构造方法。
要在子类中显示式调用直接父类参数的构造方法,可通过super()调用来实现。
注意:super调用和this调用很像,区别在于super调用的是其父类的构造方法,而this调用的是同一个类中重载的构造方法。因此,使用super调用父类构造也必须出现在子类构造执行体的第一行,所以this调用和super调用不会同时出现。
*子类构造方法的调用父类构造方法分如下几种情况:
1、子类构造分那个发执行体的第一行代码使用super调用里传入的实参列表调用父类对应的构造方法。
2、
子类构造方法执行体的第一行代码使用this显示调用本类中重载的构造方法,系统将根据this调用里传入的实参列表调用本类另个构造方法。执行本类中另一个构造方法时即会调用父类的构造方法。
3、子类构造方法执行体中既没有super调用,也没有this调用,系统将会在执行子类构造方法之前,隐式调用父类无参数的构造方法。