构造函数中this调用本类中构造函数,super调用父类中的构造函数。
细节:
子类的实例化过程:
其实在子类的所有构造函数中的第一行,默认多有一条隐式的语句。就是super();也就说子类的构造函数默认都会访问父类中空参数的构造函数。
例子:
class dragon extends Person{
public dragon() {
super();
// TODO Auto-generated constructor stub
}
public dragon(String name, int age) {
super(name, age);//调用父类的构造函数
this.name = name;//this是指子类
this.age = age;
}
}
子类需要去初始化父类的构造函数:
子类继承了父类,可以访问父类中的已有的一些属性。在子类进行实例化的时候必须要为父类中的属性分配空间。并要进行初始化,所以必须要访问一次父类的构造函数,看看父类是如何对其属性进行初始化的。所以子类要实例化对象时,必须要先看父类的初始化过程。父类的构造函数,既可以给本类对象初始化,也可以给子类对象初始化。
注意:如果父类中没有空参数的构造函数,
子类的构造函数中必须手动用super来指定要访问的父类中的构造函数。或者用this来指定访问本类中的构造函数。
public dragon(String name, int age) {
super(name, age);//指定父类初始化构造函数
this.name = name;
this.age = age;
}