java覆盖静态字段
问题描述:
public class A {
public String s="A";
public static int i=1;
}
public class B extends A {
public String s="B";
public static int i=2;
public static void main(String [] args) {
A a= new B();
B b= new B();
System.out.print(a.s+a.i);
System.out.print(b.s+b.i);
}
}
为什么输出是“A1B2”而不是“A1B1”?字段不能被覆盖,而且静态字段不能?java覆盖静态字段
答
看来你对Overriding的概念感到困惑。
在Java中,就类变量而言,您不会覆盖它们,您将它们隐藏起来。
覆盖是例如方法。隐藏是例如变量。
隐藏和重写都不同。
+1
+1只是因为这个答案是完全正确的,可能只有被问题作者投了-1,因为他不明白或者想要听到答案...... – Alfi
你不重写任何东西 - 你**隐藏**字段。 –
“隐藏”可以用静态字段来完成吗? – avivlevi
隐藏和重写有什么区别? – avivlevi