fu{
fu(){sop(...1);}
fu(int x){sop(...2);}
}
zi extends fu{
zi(){
super();//
sop(...3);
}
zi(int x)
{ //super();
this();//如果子类的构造函数第一行写了this,则不会再调用super初始化父类。因为this和super只能定义在第一行。初始化动作要先执行。而this则访问了本子类对象的构造函数。
sop(...4);
}
}
class demo
{
public static void main(..)
{
new zi(6);
}
}
1.父类构造函数中也会有super();
父类的父类是睡呢?父类super调用的到底是谁的构造函数呢?
java体系再设计时,定义了一个所有对象的父类object。
总结:
1.类中的构造函数默认第一行都有隐式的super函数语句,在访问父类中的构造函数。所以父类的构造函数既可以给自己的对象初始化,也可以给自己的子类对象初始化。
2.如果默认的隐式super没有对应的构造函数,必须在构造函数中通过this或者super的形式明确调用的构造函数。
3.this语句和super语句是不可以在同一个构造函数中出现的,必须都定义在第一行。初始化动作必须要先执行。
//子类的实例化过程的应用,也是super调用的应用。
什么时候用super调用父类中构造函数,只要使用父类的指定初始化动作,就在子类中通过super(参数)格式进行调用。 |
|