何时调用构造函数
时间:2010-10-17 来源:juxiangwu
创建一个类层次时,组成层次的类的构造函数按什么顺序被调用呢?例如,如果有一个名为为B的子类和一个名为A的超类,A的构造函数在B之前被调用还是之后调用?答案是在一个类层次中,构造函数按派生顺序,即从超类到子类的顺序被调用。还有,因为super()必须是子类构造函数的第一条执行语句,所以不管是否使用了super(),这个顺序是不变的。如果没有使用super(),那么将执行每个超类的默认或无参数的构造函数。
如:
class A {
A(){
System.out.println("Inside A's constructor");
}
}
class B extends A{
B(){
System.out.println("Inside B's constructor");
}
}
class C extends B{
C(){
System.out.println("Inside C's constructor");
}
}
class D extends C{
D(){
System.out.println("Inside A's constructor");
}
}
class CallingConstructor(){
public static void main(Sting[] args){
D d = new D();
}
}
如:
class A {
A(){
System.out.println("Inside A's constructor");
}
}
class B extends A{
B(){
System.out.println("Inside B's constructor");
}
}
class C extends B{
C(){
System.out.println("Inside C's constructor");
}
}
class D extends C{
D(){
System.out.println("Inside A's constructor");
}
}
class CallingConstructor(){
public static void main(Sting[] args){
D d = new D();
}
}
相关阅读 更多 +
排行榜 更多 +