public class Animal{
int n = 5;
public static void main(String[] args) {
Animal a = new Animal();
Animal ah = new Horse();
Horse h = new Horse();
System.out.println(h.n); // prints 7
System.out.println(ah.n); // prints 5
h = (Horse) ah;
System.out.println(h.n); // prints 7
}
}
class Horse extends Animal{
int n = 7;
}
我的问题:
为什么h.n
之后仍然打印 7 h = (Horse) ah
?赋值后它应该指向同一个对象,ah
并且 n 字段指向 5?