这个例子的结果为什么 是0和1呢?可以的话麻烦解释详细一点。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+"\n"+"sup.getField()="+sup.getField());
}
}
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+"\n"+"sup.getField()="+sup.getField());
}
}
对于方法,会处于override的情况,所以访问的是子类的getField(),为1
sup.field 这个是父类对象的field,因而是0
sup.getField()调用的是被子类重写的getField(),因而是1
记住:Super sup=new Sub()即:儿子对象当作父对象来使用时,除了重写的方法是子类对象的之外,其余的都是父对象的.