构造函数中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;
}
本文详细解析构造函数中的this调用与super调用机制,包括子类实例化过程中的super作用,以及如何访问父类构造函数进行属性初始化。
1370

被折叠的 条评论
为什么被折叠?



