当前位置: 代码迷 >> J2SE >> 小弟请求解决方案
  详细解决方案

小弟请求解决方案

热度:67   发布时间:2016-04-24 02:10:10.0
小弟请求
Java code
//: polymorphism/FieldAccess.java// Direct field access is determined at compile time.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(); // Upcast    System.out.println("sup.field = " + sup.field +      ", sup.getField() = " + sup.getField());    Sub sub = new Sub();    System.out.println("sub.field = " +      sub.field + ", sub.getField() = " +      sub.getField() +      ", sub.getSuperField() = " +      sub.getSuperField());  }} 

 结果为:

sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0
但是我不明白为什么 第一个sup.field为什么等于0啊

------解决方案--------------------
Java code
 Super sup = new sub(); //因为Super这个是父类,所以 sup.field 调用的是 field = 0
------解决方案--------------------
字段没有多态,但方法有多态。
  相关解决方案