您的位置:首页 > 编程语言 > Java开发

java基础--多态-域与静态方法1(java编程思想)

2013-10-25 14:30 274 查看
看以下例子:

package extendsTest;
/**
*
* @author xiaoyu
*
*/
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 TestExtendsField {
public static void main(String args[]){
Super super1=new Sub();
System.out.println(super1.field+";"+super1.getField()+";");

Sub sub=new Sub();
System.out.println(sub.field+";"+sub.getField()+";"+sub.getSuperField());
}
}


输出结果:

0;1;

1;1;0

结果分析:当Sub转型为Super引用时,任何域访问操作都将由编译器解析,因此不再是多态的。本例中,

为Super.field和Sub.field分配了不同的存储空间。

这样,Sub实际上包含了两个field;它自己的和它从Super处得到的,然而在Sub中的field时所产生的默认域并非Super.field。

因此为了得到Super.field,必须显示的指明super.field.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java基础
相关文章推荐