【原创】从机理欣赏语言 JAVA篇 3

多态是面向对象程序设计的一个特性。在JAVA中,发生在构造器之内的多态行为尤为有趣。
首先构建一个抽象类,在抽象类构造函数中调用了类中一个抽象方法Show
abstract class Point
{
    abstract void Show();
    Point()
    {
        System.out.println("Point");
        Show();
    }
}
接着,构建其一个子类
class Point1 extends Point
{
    private int x=1;
    void Show()
    {
        System.out.println(x);
    }
    Point1()
    {
        System.out.println("Point1");
        Show();
    }
}
然后我们构建一个入口
public class Example
{
    public static void main(String[] args)
    {
        new Point1();
    }
};
编译运行后,我们惊奇的发现结果是这样的:
Point
0
Point1
1
分析一下,它的运作流程是这样的:
1 main函数调用Point1的构造函数构建一个对象,因为Point1继承于类Point,所以在Point1构造函数中首先调用Point的构造函数构造基子对象
2 在Point构造函数中,调用一个抽象方法Show。这时,构建其继承类(仅按默认进行初始化)
3 基子对象构建完毕后,继续调用Point1构造函数进行对象剩余的构建工作(这时子对象中数据均按设计者要求进行初始化)
最后编辑2007-02-24 11:34:37