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

在JAVA中,允许向上转型。可以利用向上转型做几个有趣的实验,去体味JAVA继承的机理。
1 同名同参数函数的继承
首先建立两个类
class Point1
{
    public void Show()
    {
        System.out.println("Point1");   
    }
}
class Point2 extends Point1
{
    public void Show()
    {
        System.out.println("Point2");   
    }
}
我们可以知道,继承类和基类中同时存在void Show(void)函数。接着,构建一个入口:
public class Example
{
    private static void f(Point1 pt)
    {
        pt.Show();
    }
    public static void main(String[] args)
    {
        Point2 pt2=new Point2();
        f(pt2);
    }
};
我们可以看到,在main函数中,我们向f函数传入了一个Point2对象。下面是输出的结果:
Point2
结果证明,同名的函数是被覆盖了

2 同名不同参数
如果我们把类的定义变一下
class Point1
{
    public void Show()
    {
        System.out.println("Point1");   
    }
}
class Point2 extends Point1
{
    public void Show(int n)
    {
        System.out.println("Point2");   
    }
}
我们同样建立一个入口
public class Example
{
    private static void f(Point1 pt)
    {
        pt.Show(1f);
    }
    public static void main(String[] args)
    {
        Point2 pt2=new Point2();
        f(pt2);
    }
};
结果显示,继承对象中的基子对象的函数并未被覆盖。
最后编辑2007-04-12 20:15:13