class X { //Super class
int a=10;
public void data() {
int b=10;
System.out.println(b);
}
}
class Y extends X { //Subclass
int a=20;
public void data() {
int b=20;
System.out.println(b);
}
}
public class Casting {
public static void main(String[] args) {
X x = new Y();
System.out.println(x.a); //Prints a=10 : Value of superclass
x.data(); //Prints b=20 : Value of subclass
}
}
我知道这与向上推广和向下转发有关。但在这种情况下,两个值不应该属于同一类。
修改 固定它! 结果,
执行X x = new Y();
, x 保存其字段(变量)的原始值,但保留在子类中重写的任何方法的值。
因此,实例 x 成立:
A = 10
public void data(){
int b = 20;
System.put.println(B);
}