当前位置: 代码迷 >> Java相关 >> java中关于“向下转型”的疑问
  详细解决方案

java中关于“向下转型”的疑问

热度:6939   发布时间:2013-02-25 21:44:12.0
java中关于“向上转型”的疑问?
如下程序:
class Super
{
public int field=0;
public int getField(){ return field; }
}
class Sub extends Super
{
public int field=1;
public int getField(){ return field; }
public int getSuperField(){ return super.field; }
}
public class FieldAccess
{
public static void main(String[] args){
Super sup=new Sub();

System.out.println("sup.field= "+ sup.field+
" , sup.getField()= "+sup.getField() );
}

}
结果为
sup.field= 0 , sup.getField()= 1
我弄不清为什么会是这个结果,Sub类不是把Super类中的那两个方法覆盖了吗?为何不是
sup.field= 1 , sup.getField()= 1 呢?

------解决方案--------------------------------------------------------
sup声明的是父类Super,所以拥有父类的属性,所以sup.field为零。
正因为子类覆盖了父类的方法,根据多态性,sup.getField()执行子类的方法,返回子类的field(=1)。
  相关解决方案