瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 【原创】从机理欣赏语言 JAVA篇 2
天下奇才 - 2007-2-23 15:38:00
在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-2-24 11:43:00
顶,就是看不明白呀。哈哈。
dfsk0509 - 2007-4-12 19:49:00
有点启发
海蓝云天 - 2007-4-12 20:24:00
java只可以单继承,
接口实现了多继承
1
查看完整版本: 【原创】从机理欣赏语言 JAVA篇 2