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应该只能访问自己的数据成员,而事实不是,这样总觉得不要理解。
....
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应该只能访问自己的数据成员,而事实不是,这样总觉得不要理解。
解决方案 »
- 【讨论散分】有学过VB的java er 谈谈经验
- 会用EventListener的请进
- 关于“静态”???
- 求教!!!如何重新打开被shutdownoutput关闭的输出流
- 100分高手来拿,quik
- 一个关于double的问题,真是让我烦心
- import org.apache.tomcat.core.*; 编译通不过?
- 正在开发“模拟”聊天室项目,有意提高者进来参与吧!(无论高中低手都有帮助的)
- 如果将byte[]中的内容原封不动的转到string?
- 连接远程数据库的问题?快来看,一定能学到东西
- 关于跟踪的问题。高手请帮忙
- 请问从socket取得的InputStream的readLine()方法是不是自动阻塞的?
point.clear();在JAVA中也是调用Pixel的clear方法。
只是因为子类方法中,
public void clear(){
super.clear();
....
}
所以会调用到父类的方法
{ /**
* @param args
*/
public static void main(String[] args)
{
Point point = new Pixel();
point.clear(); }}class Point{
public void clear(){
System.out.println("Point");
}
}class Pixel extends Point{
public void clear(){
super.clear();
System.out.println("Pixel");
}
}输出结果:
Point
Pixel
point.clear();
Pixel继承自Point类,这个时候 其实point实际是Pixel类型的,所以point.clear()调用的是Pixel这个类里的clear方法,但是你的Pixel这个类的clear方法里写了super.clear();这样就在Pixel类的clear方法里调用了Point类的clear方法。
JAVA是运行时绑定的。
-------------------------------------------------
java就是属于这种,看看thinking in java就有这个解释