创建类的一个实例时,按照下面步骤进行创建:
1. 给当前类及其父、祖类的所有成员字段分配空间,并给它们赋予默认值
2. 开始执行当前类的构造器
3. 如果当前类有父类,则对父类创建一个实例:从第 2 步开始并把父类当作新的当前类
4. 给当前实例、当前实例的字段进行初始化
5. 执行当前类的构造器的剩余部分代码。
上面的步骤包含一个递归算法。假设类 C 有父类,实例化 C 到第 3 步的时候,需要先创建父类的一个实例,即父类要经历完第 2、3、4、5 步骤之后,才到类 C 继续第 4 步。如果父类也有自己的父类,则父类的父类也要先实例化,才到父类执行第 3 步。依次类推,直到实例化 Object 类,因为 Object 类没有父类。
下面有两个例子进行说明。
1,常规的类实例化
public classPoint {intx, y;
Point(){ x= 1; y= 1; }
}
public class ColoredPoint extendsPoint {int color = 0xFF00FF;
}
public classInstanceDemo {public static voidmain(){
ColoredPoint cp= newColoredPoint();
System.out.println(cp.x+ " | " + cp.y + " | " +cp.color);
}
}
引起创建类的实例的是代码 new ColoredPoint