java 覆盖静态字段

java overriding static fields

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中,就class变量而言,你不覆盖它们,你隐藏它们。

Overriding is for instance methods. Hiding is for instance variables.

隐藏和覆盖是不同的。