class A{
int a = 10;
}
class B extends A{
int a= 20;
}
public class C {
public static void main(String [] args){
A a = new B();
System.out.println(a.a);
}
}
输出:10
如何根据上述代码从基类中打印值。
2 个答案:
答案 0 :(得分:3)
B已经从a继承了A。再次执行int a = 20;隐藏从a继承的A。这意味着,x.a的编译时间为x时,形式为B的表达式将求值为20。
要获得预期的行为,可以在a的构造函数中重置B:
class B {
// no need to redeclare "a" here!
public B() { a = 20; }
}