其实Java继承中,成员变量(包括静态变量,实例变量,常量)没有覆盖(override)一说,应该叫隐藏(hidden)。override只针对方法来说的。

解决方案 »

  1.   

    楼上说的是正确的。
    楼主可以为T T1 T2 T3加上toString()方法。然后打印的时候,把t.a改为t.toString(),((T)t).a改为((T)t).toString(),以此类推。最后可以看到用toString()打印出来的值总是为3,因为toString被override了,所以调用toString()的时候,toString()里,a的值总是"new"后面那个类型(这里总是T3)里的值。
      

  2.   

    也就是说override只针对方法?