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;
}
Run Code Online (Sandbox Code Playgroud)
为什么h.n还要打印7 h = (Horse) ah?在赋值之后它应该指向同一个ah点,n字段指向5?