程序如下:
class Fruit {
boolean zestySkin= false;
protected void f()
{
System.out.println("Fruit.f()");
}
}
public class Citrus extends Fruit {
boolean zestySkin= true;
public void f()
{
super.f();
System.out.println("Citrus.f()");
}
public static void main (String args[]) {
Citrus c = new Citrus();
((Fruit)c).f();
}
}
结果是:Fruit.f()
Citrus.f()
疑问:c对象已经转换成Fruit类了,再次调用f()函数,应该执行此函数在Fruit类中的定义,那输出就应该是Fruit.f()啊。为什么还有Citrus.f()那?
求助高手指点哦!谢谢
class Fruit {
boolean zestySkin= false;
protected void f()
{
System.out.println("Fruit.f()");
}
}
public class Citrus extends Fruit {
boolean zestySkin= true;
public void f()
{
super.f();
System.out.println("Citrus.f()");
}
public static void main (String args[]) {
Citrus c = new Citrus();
((Fruit)c).f();
}
}
结果是:Fruit.f()
Citrus.f()
疑问:c对象已经转换成Fruit类了,再次调用f()函数,应该执行此函数在Fruit类中的定义,那输出就应该是Fruit.f()啊。为什么还有Citrus.f()那?
求助高手指点哦!谢谢
Citrus c = new Citrus();
((Fruit)c).f();
与
Fruit c = new Citrus();
c.f();
是一样的,c仍然是Citrus的对象
http://topic.csdn.net/t/20040928/10/3414894.html
关于向下转型和强制类型转换
http://topic.csdn.net/t/20040928/10/3414894.html
关于向下转型和强制类型转换