日期:2014-05-20  浏览次数:20741 次

java类上下转性的问题
class   Pixel   extends   Point{
....
    public   void   clear(){
        super.clear();
        ....
    }
}
按照书上说,调用的方法使用对象的实际类,而不是对象引用的类型。如:
Point   point   =   new   Pixel();
point.clear();
clear实际调用了Pixel的clear方法。

这里我就有疑问了,Point作为Pixel的父类,point.clear()应该自动向上转型,而调用Point类方法,我以前是学delphi,对对象也有一定了解,我也测试过在delphi里是调用Point类方法的。我现在怀疑是不是我看的java里头写错了,还是什么原因,希望高手帮忙解释一下,如果确实是调用了Pixel的clear方法,这样是不是存在访问权限问题呢?因为Pixel的clear方法是Point的方法扩展,可以访问Pixel下的数据,而point是Point对象,他的clear应该只能访问自己的数据成员,而事实不是,这样总觉得不要理解。

------解决方案--------------------
除非java程序都属于晚绑定的(late bingding)
-------------------------------------------------
java就是属于这种,看看thinking in java就有这个解释