public class FatherClass
{
public FatherClass()
{
System.out.println(“FatherClass Create”);
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println(“ChildClass Create”);
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
结果是什么啊,请详细解释一下执行过程作者: 侯伟浩 时间: 2011-11-25 19:30
FatherClass Create
FatherClass Create
ChildClass Create
解释:声明父类对象的时候执行一次父类的构造方法;
声明子类对象的时候先调用父类的构造方法然后再调用自己的构造方法。
所以会出现上面的情况。作者: 王丰盛568 时间: 2011-11-25 20:43
继承时候类的执行顺序问题,构造函数初始化顺序。虽然听过,看过不少相关资料,但今天一开始还是没弄明白,只好拿到程序里面运行一下才确定:初始的时候先初始化继承的构造函数,再调用自己的构造函数。
下面是运行的程序
package test;
public class FatherClass {
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
------------
package test;
public class ChildClass extends FatherClass {
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();//这句输出FatherClass Create 就初始化调用构造函数
ChildClass cc = new ChildClass();//这句输出FatherClass Create ChildClass Create
//即初始的时候先初始化继承的构造函数,再调用自己的构造函数
}
}
-----------------