java中的一个简单继承问题(麻烦详细的帮忙分析下结果)

来源:百度知道 编辑:UC知道 时间:2024/06/02 11:45:56
父类:
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
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();
}
}
结果如下:
FatherClass Create
FatherClass Create
ChildClass Create

因为FatherClass fc = new FatherClass(); 所以输出第一个FatherClass Create,这个应该没有什么难理解的。
ChildClass cc = new ChildClass();这个时候去调用构造函数之前,因为有继承关系所以java会先将你要继承的那个类分配内存空间,所以FatherClass类的构造函数执行了一遍,这也就是第二个FatherClass Create。等需要继承的那个类已经有内存空间了以后,再执行ChildClass类的构造函数,输出ChildClass Create。

发生继承关系的两个类的初始化
初始化子类对象时
子类从父类继承的属性 还是要父类初始化的
所以子类初始化的过程 先调用父类的构造方法 为父类的属性赋值
然后再调用子类的构造方法 为它自己的属性赋值
ChildClass cc = new ChildClass();
的输出语句为
FatherClass Create
ChildClass Create
先调用父类构造方法
再调用自己的

父类:
public class FatherClass
{
public FatherClass() //父类构造方法
{
System.out.println("FatherClass Create"); //输出"FatherClass Create"
}
}
子类:
public class ChildClass extends FatherClass //继承父类
{
public ChildClass() //子类构造方法
{
System.out.println("ChildClass Create"); //输出"ChildClass Create"
}
public static void main(String[] args)
{