想了解上溯造型在Java中。 最近观察到的异常行为。
例:
public class A extends B {
public int i = 2;
public void printI() {
System.out.println("print i = " + this.i);
}
public static void main(String[] args) {
B a = new A(); // <- upcasting here
System.out.println("i = " + a.i);
a.printI();
}
}
class B {
public int i = 1;
public void printI() {}
}
//Output:
//i = 1
//print i = 2
似乎,该upcasted对象具有两个分开的“i”的性质。 一个“我”直接访问(AI)和其他通过子类的方法(a.printI())。
貌似upcasted对象会从子类从超类的属性和方法。
对象怎么能有两个不同的“我” S?